kudu介绍和使用

kudu架构

同hdfs和Hbase相似,kudu使用单个的master节点,用来管理集群的元数据,并且使用任意数量的tablet server节点来存储实际数据。

可以部署多个master节点来提高容错性,一个table表的数据,被分割成一个或多个tablet,tablet被部署在 tablet server来提高数据读写服务

Kudu有列长度限制,不能超过64k

不支持CHAR、VARCHAR、DATE和数组等复杂类型。

不能通过ALTER TABLE更改现有列的类型和是否可为空属性

DECIMAL类型列的精度和规模不能通过ALTER TABLE进行修改(Kudu 1.7+才支持decimal类型)

kudu使用

kudu是一个折中产品平衡了hbase的随机读写和hdfs的批量分析的性能
可以通过Impala的shell对kudu表进行交互式操作
内部表和外部表
内部表由impala管理,当从impala删除时,数据和表确实被删除

外部表(create external table)不受impala管理,删除此表不会从kudu上删掉,它智只会删除掉impala和Kudu之间的映射
创建内部表
create table test(
 	id bigint,
 	name string,
	 primary key(id)
)
partition by hash partitions 16
stored as kudu;

说明:建表时partition by... stored as kudu是必须要有的

kudu表基于partition方法被拆分成多个分区,每一个分区就是一个tablet,一张Kudu表所属的所有tablet均匀分布并存储在tablet servers的磁盘上,同时要指定primary key作为partition的依据

kudu的分区方法有两种:partition by hashpartition by range
分区方法
基于hash的方法的分区的基本原理:
   基于parimary key的Hash值将每个row划分到相应的tablet中,分区的个数即tablet的个数要在建表语句中指定
   如果未指定以某个字段的Hash值进行分区,默认以主键的hash值进行分区
insert语句
kudu表支持两种Insert语句
insert into test_kudu values(2,'lisa'),(3,'anna');
Insert into test_kudu select * from other_table;
update语句
kudu表的update操作不能更改主键的值,其它与标准sql语法相同
upsert语句(重点)
upsert into table test_kudu values(5,'lili')
如果指定的values中的主键在test_kudu表中已经存在,就执行update语义,反之执行insert语句

UPSERT into table testdb.tablemy_first_table(id,name)
  SELECT id,name from testdb.kudu_table where id=2
delete语句
同标准sql语法相同
注意:
kudu的原生api中,update和upsert必须根据主键来操作,

如果使用impala来操作kudu表,where后面的条件可以任意,可以不是根据主键,impala会自己转化成主键

kudu不支持修改表结构的语句

详情:https://blog.csdn.net/cdxxx5708/article/details/79074489

修改表
修改表名,修改的只是impala的映射名
alter table test_kudu rename to cc_kudu;

修改kudu存储的表名,是不会修改在impala中的映射名的,也就是在impala中访问的依然是更改之前的名字
ALTER TABLE kudu_person SET TBLPROPERTIES('kudu.table_name' = 'new_name');
kudu注意点
3、创建 Kudu 表时,CREATE TABLE 语句必须在主键顺序中包含其他列之间的主键列。
4、包含 UNIXTIME_MICROS 类型列的kudu表不能用作 Impala 中的外部表。
5、Impala 不能使用 TIMESTAMP , DECIMAL , VARCHAR 或嵌套类型的列创建 Kudu 表。
6、Impala 无法更新主键列中的值。
7、NULL,NOT NULL,!= 和 LIKE 谓词不会被推送到 Kudu ,而是会被 Impala 扫描节点评估。这可能会降低相对于其他类型谓词的性能。
8、通过 Impala 的更新,插入和删除是非事务性的。如果查询部分失败,其部分效果将不会回滚。
9、单个查询的最大并行度仅限于表中的 tablets 数量。为了获得良好的分析性能,每个主机可以使用10个或者更多tablets。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值