文章目录
一、集成Impala
impala配置勾选kudu,随后重启impala。
二、Kudu操作
官网文档
使用impala对kudu进行操作比较方便,所以以下步骤都是在impala-shell操作。
2.1 创建表
2.1.1 从Impala创建新的Kudu表
CREATE TABLE my_first_table
(
id BIGINT,
name STRING,
PRIMARY KEY(id)
)
PARTITION BY HASH PARTITIONS 16
STORED AS KUDU;
2.1.2 从其他表中创建表
CREATE TABLE new_table
PRIMARY KEY (ts, name)
PARTITION BY HASH(name) PARTITIONS 8
STORED AS KUDU
AS SELECT ts,name,value FROM old_table;
2.2 插入数据
2.2.1 插入一行
INSERT INTO my_first_table VALUES (99, "sarah");
2.2.2 插入多行
INSERT INTO my_first_table VALUES (1,"john"), (2,"jane"), (3,"jim");
2.2.3 批量插入
批量插入的几种方式:
- 多条单一的INSERT语句
这种方法的优点是易于理解和实施。这种方法可能效率不高,因为与Kudu的插入性能相比,Impala具有较高的查询启动成本。这将导致较高的延迟和较差的吞吐量。
- 一条INSERT包含多个VALUES
如果您包含1024个以上的VALUES语句,则Impala batch_size在将请求发送到Kudu之前将它们分成1024个组。此方法可能比多个INSERT语句要好一些,但是要提前设置impala配置,set batch_size=10000;
- 使用SELECT FROM从impala中的表导入
从Impala和Kudu的角度来看,通常表现最佳的方法通常是使用SELECT FROM
从Impala中的语句导入数据。
INSERT INTO my_kudu_table
SELECT * FROM legacy_data_import_table;
2.3 更新数据
UPDATE kudu_big_data_test set name = 'wangyu' where id = 2;
2.4 删除数据
DELETE FROM my_first_table WHERE id < 3;
2.5 创建视图
CREATE VIEW IF NOT EXISTS kudu_view1 AS
SELECT
e.name,d.house
from kudu_table e
INNER JOIN kudu_table3 d
ON e.id= d.id;
2.6 描述表
DESCRIBE kudu_big_data_test;
2.7 查看分区情况
SHOW PARTITIONS kudu_big_data_test;
2.8 查看当前使用数据库
SELECT current_database();
2.9 查看建表语句
SHOW CREATE TABLE kudu_big_data_test;
2.10 修改impala中的映射表名
alter table kudu_big_data_test rename to kudu_big_data_test2;
2.11 修改kudu存储的表名
impala映射的表名不会随着更改
ALTER TABLE kudu_big_data_test2 SET TBLPROPERTIES('kudu.table_name' = 'kudu_big_data_test3');
2.12 添加列
alter table kudu_big_data_test2 add columns(abc string,time_stamp string);
2.13 删除列
ALTER table kudu_big_data_test2 drop column abc;