1、Hudi 建表语句
CREATE TABLE命令通过指定带有表属性的字段列表来创建Hudi Table。
格式:
CREATE TABLE [ IF NOT EXISTS] [database_name.]table_name
[ (columnTypeList)]
USING hudi
[ COMMENT table_comment ]
[ LOCATION location_path ]
[ OPTIONS (options_list) ]
创建一个cow内部表
create table if not exists hudi_table0 (
id int,
name string,
price double
) using hudi options (type = 'cow',primaryKey = 'id');
创建一个mor外部表
2、数据写入
近实时写入:Hudi支持近实时写入,可以减少碎片化工具的使用,并通过CDC(Change Data Capture)增量导入RDMBS(关系数据库系统)数据。此外,Hudi还限制小文件的大小和数量,优化存储效率
增量Pipeline:Hudi支持增量Pipeline,通过区分arrivetime和event time来处理延迟。
-
数据查询:
-
流模式增量读取:流模式增量读取会持续不断地返回实时更新的结果,而批模式则在查询结束之后退出,需要再次执行查询才能获取更新的数据4。
架构和特性
Hudi的架构包括以下几个主要组件:
- Metadata表:用于存储索引信息,提高查询性能。Metadata表是一个MOR类型的Hudi表,设计为无服务,不和特定计算引擎绑定,数据文件格式为HFile5。
- 索引策略:支持files index和column_stats index,前者存储文件信息,后者存储列统计信息,优化查询计划5。
实际应用场景
Hudi适用于多种场景,包括但不限于:
- 近实时写入和查询:适用于需要快速写入和查询的应用场景。
- 增量Pipeline:适用于需要处理大量增量数据的场景。
- 流模式增量读取:适用于需要实时更新数据的场景。