直接访问外部数据源
从Hive外表导入
CnchHive为ByConity提供的一种表引擎,支持使用外表的方式进行联邦查询,用户无需通过数据导入,可以直接进行数据查询加速。
使用示例:
- 实例 1:构建 hive 表的全集
--创建hive外表
CREATE TABLE t
(
client_ip String,
request String,
status_code INT,
object_size INT,
date String
)
ENGINE = CnchHive('psm', 'hive_database_name', 'hive_table_name')
PARTITION BY date;
--参数说明:
--psm:hivemetastore psm
--hive_database_name:hive表database name
--hive_table_name:hive表table name
--查询hive外表
select * from t where xxx;
- 实例 2:构建 hive 表的子集
CREATE TABLE t
(
client_ip String,
request String,
date String
)
ENGINE = CnchHive('psm', 'hive_database_name', 'hive_table_name')
PARTITION BY date
--参数说明:
--psm:hivemetastore psm
--hive_database_name:hive表database name
--hive_table_name:hive表table name
--查询hive外表
select * from t where xxx;
- 实例 3:hive bucket 表构建
CREATE TABLE t
(
client_ip String,
request String,
device_id String,
server_time String,
date String
)
ENGINE = CnchHive('psm', 'hive_database_name', 'hive_table_name')
PARTITION BY date
CLUSTER BY device_id INTO 65536 BUCKETS
ORDER BY server_time
SETTINGS cnch_vw_default ='vw_default'
--参数说明:
--psm:hivemetastore psm
--hive_database_name:hive表database name
--hive_table_name:hive表table name
--查询hive外表
select * from t where xxx;
注意事项:
- 外表列需要与 Hive 表一一对应,但列的顺序不需要。可以选择 Hive 表中的部分列,但分区列必须全部包含。
- 分区需要通过 partition by 语句指定,并定义到描述列表中。对于 Bucket 表,需要指定分桶列和分桶数量。有 ORDER BY 字段时也需要指定。
- ENGINE 指定为 CnchHive。参数包括:psm、hive_database_name 和 hive_table_name。不支持 view。
- 这里有两个配置:cnch_vw_default:用于指定 vw,max_read_row_group_threads:用于指定并发读取 Parquet row group 的并发数量。
- 支持的列类型的对应关系,如下表:
Hive列类型 | CnchHive列类型 | 描述 |
---|---|---|
INT/INTERGER | INT/INTERGER | |
BIGINT | BIGINT | |
TIMESTAMP | DateTime | |
STRING | String | |
VARCHAR | FixedString | 内部转换为 FixedString |
CHAR | FixedString | 内部转换为 FixedString |
DOUBLE | DOUBLE | |
FLOAT | FLOAT | |
DECIMAL | DECIMAL | |
MAP | Map | |
ARRAY | Array |
说明:Hive 表 schema 变更不会自动同步,需要在 ClickHouse 中重建 Hive 外表。目前仅支持 Parquet 存储格式,不支持 insert 和 alter 操作。
参数设置
cnch_vw_default:用于指定 vw。
max_read_row_group_threads:用于指定并发读取 Parquet row group 的并发数量。