使用presto连接kudu查询引擎,在kudu中进行增删改查
查询数据
Apache Kudu 不支持模式,即表的命名空间。连接器可以选择通过表命名约定来模拟模
默认行为(无模式模拟)
默认情况下禁用模式模拟。在这种情况下,所有 Kudu 表都是default架构的一部分。
例如, 如果目录和模式分别设置为和,则orders可以在 Presto 中查询名为 的 Kudu 表。SELECT * FROM kudu.default.orders、SELECT * FROM orders。
表名可以包含 Kudu 中的任何字符。在这种情况下,请使用双引号。例如,查询名为special.table!use的 Kudu 表。SELECT * FROM kudu.default."special.table!"
例子
- 在默认架构中创建一个用户表
CREATE TABLE kudu.default.users (
user_id int WITH (primary_key = true)
, first_name varchar, last_name varchar
)
WITH (
partition_by_hash_columns = ARRAY['user_id']
, partition_by_hash_buckets = 2
);
在创建 Kudu 表时,您必须/可以指定有关列的主键、编码和压缩以及散列或范围分区的附加信息。
- 该表可以使用
DESCRIBE kudu.default.users;
- 插入一些数据
INSERT INTO kudu.default.users VALUES (1, 'Donald', 'Duck'), (2, 'Mickey', 'Mouse');
- 选择插入的数据
SELECT * FROM kudu.default.users;
模式模拟的行为
如果在连接器属性中启用了模式模拟,即etc/catalog/kudu.properties,根据某些约定将表映射到模式。
- 使用kudu.schema-emulation.enabled=true和kudu.schema-emulation.prefix=,映射的工作方式如下:
Kudu 表名 |
Presto 限定名称 |
orders |
kudu.default.orders |
part1.part2 |
kudu.part1.part2 |
x.y.z |
kudu.x."y.z" |
由于 Kudu 不直接支持模式,$schemas因此创建了一个名为的特殊表 来管理模式。
- 使用kudu.schema-emulation.enabled=true和kudu.schema-emulation.prefix=presto::,映射的工作方式如下:
Kudu 表名 |
Presto 限定名称 |
orders |
kudu.default.orders |
part1.part2 |
kudu.default."part1.part2" |
x.y.z |
kudu.default."x.y.z" |
presto::part1.part2 |
kudu.part1.part2 |
presto:x.y.z |
kudu.x."y.z" |
由于 Kudu 不直接支持模式,presto::$schemas因此创建了一个名为的特殊表来管理模式。
支持字段类型
注:使用presto执行create table...as...语句到kudu时,varchar\VARBINARY最大长度会丢失,date类型会被转化成字符串
Presto Data Type |
Kudu Data Type |
Comment |
BOOLEAN |
BOOL |
|
TINYINT |
INT8 |
|
SMALLINT |
INT16 |
|
INTEGER |
INT32 |
|
BIGINT |
INT64 |