KUDU使用注意点和心得体会

本文分享了Kudu在实际应用中遇到的问题及解决办法,包括表结构设计、数据读写优化、Python API使用技巧、与Impala集成、服务重启注意事项等,适合Kudu初学者和进阶者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Kudu使用了一段时间,记录下中间踩过的坑(基础用法跳过)

1、Kudu创建表时,PK字段一定要写在表结构的最前面。

2、Hash分区只能在创建表时修改,而Range分区可以在使用过程中动态改变。

3、Range分区在动态改变时,通过python api新增一个Range分区(key代表字段名称,ymd代表"yyyy-MM-DD")示例代码如下:

kudu_tbl = kudu_client.table(tbl_name)
alterer = kudu_client.new_table_alterer(kudu_tbl)
alterer.add_range_partition(
    lower_bound={key: ymd}, upper_bound={key: ymd},
    lower_bound_type=kudu.INCLUSIVE_BOUND, upper_bound_type=kudu.INCLUSIVE_BOUND)
table = alterer.alter()

4、一次性将大量数据读入Kudu,会报Server timeout错误,解决方案2个(可以同时使用):

(1)增加memory_limit_hard_bytes配置的值

(2)将大量数据分批写入Kudu表

5、Kudu的Python api需要注意版本选择,目前部门用的cdh5.13,kudu1.4,但是python api用的1.4(没有匹配的1.5版本,安装python api时要注意)

6、通过impala使用kudu表,既可以通过impala直接创建kudu表(store as kudu),也可以先单独创建kudu表,再通过通过impala做外部表映射(create external table)。

7、通过cdh的clouder manager重启kudu服务后,

通过命令:kudu cluster ksck <master_addresses> 查看kudu各个服务和节点状态时,开始一段时间各个kudu表会不可用,需要等待一段时间才会正常(重启之后,kudu内部需要自动做各种处理工作),这时不要慌,耐心等待即可。

8、通过python的os.system提交命令imapal sql时,注意字段名称是否含有特殊字段,若有则需要做转义,否则impala-shell运行时会根据特殊字段切分字段名称,导致报错。

9、读取Kudu表时,需要根据分区字段读取,尽可能少加载数据,切记一次性读取全量表(数据表很大时,读取性能会有很大问题)。

10、通过python api写入数据时 ,需要控制flush数据量,否则会内存问题,建议每间隔N条记录(根据实际情况选择)刷新一次。

11、kudu表的现有限制(未来版本限制或许会移除),举几个需要重点注意的栗子:

  • 字段数目不要超过300
  • PK的类型选择,不能float和bool等
  • 单个表在单个tablet server上的最大tablets数目为60,单个tablet server上最大tablet数目为2000(在设计表分区的时候需要重点考虑)

 

更多学习笔记可以关注我的微信公众号「kelly学挖掘」,欢迎交流。

-- over

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值