Hudi、Iceberg、Delta Lake、Paimon四种数据湖的建表核心语法

一、Hudi 核心建表语法(基于Spark SQL)

Hudi建表需明确表类型(COW/MOR)、主键、分区字段,依赖Spark配置或WITH参数指定核心属性。

1. MOR表(Merge-On-Read,实时写入优先)
sql 复制代码
CREATE TABLE [IF NOT EXISTS] 表名 (
  字段名 类型 [COMMENT '注释'],
  ...,
  主键字段 类型,  -- 唯一标识记录
  预合并字段 类型,  -- 解决主键冲突(如update_time)
  分区字段 类型  -- 如dt(yyyyMMdd)
)
USING HUDI  -- 指定Hudi格式
[PARTITIONED BY (分区字段)]  -- 分区配置
LOCATION '存储路径'  -- 数据存储路径(HDFS/OSS/S3)
TBLPROPERTIES (
  'hoodie.table.type' = 'MERGE_ON_READ',  -- 表类型:MOR
  'hoodie.datasource.write.recordkey.field' = '主键字段',  -- 主键
  'hoodie.datasource.write.precombine.field' = '预合并字段',  -- 冲突解决字段
  'hoodie.datasource.write.hive_style_partitioning' = 'true'  -- 兼容Hive分区格式
);
2. COW表(Copy-On-Write,读取优先)
sql 复制代码
CREATE TABLE [IF NOT EXISTS] 表名 (
  字段名 类型 [COMMENT '注释'],
  ...,
  主键字段 类型,
  分区字段 类型
)
USING HUDI
[PARTITIONED BY (分区字段)]
LOCATION '存储路径'
TBLPROPERTIES (
  'hoodie.table.type' = 'COPY_ON_WRITE',  -- 表类型:COW
  'hoodie.datasource.write.recordkey.field' = '主键字段',  -- 主键
  'hoodie.datasource.write.partitionpath.field' = '分区字段'  -- 分区字段
);

二、Iceberg 核心建表语法(基于Spark SQL)

Iceberg建表强调元数据管理和多引擎兼容,需指定分区和Catalog配置,支持显式/隐藏分区。

1. 基础分区表(显式分区)
sql 复制代码
-- 先配置Iceberg扩展(Spark环境)
SET spark.sql.extensions = org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions;

CREATE TABLE [IF NOT EXISTS] 表名 (
  字段名 类型 [COMMENT '注释'],
  ...,
  分区字段 类型  -- 如dt、region
)
USING ICEBERG  -- 指定Iceberg格式
PARTITIONED BY (分区字段1, 分区字段2)  -- 支持复合分区
LOCATION '存储路径'
TBLPROPERTIES (
  'catalog' = 'hive'  -- 兼容Hive Metastore(可选)
);
2. 隐藏分区表(分区字段透明)
sql 复制代码
CREATE TABLE [IF NOT EXISTS] 表名 (
  字段名 类型 [COMMENT '注释'],
  ...,
  时间字段 TIMESTAMP,
  -- 隐藏分区字段:由时间字段自动生成(如按日期分区)
  隐藏分区字段 DATE GENERATED ALWAYS AS DATE(时间字段)
)
USING ICEBERG
PARTITIONED BY (隐藏分区字段)  -- 分区字段对用户透明
LOCATION '存储路径';

三、Delta Lake 核心建表语法(基于Spark SQL)

Delta Lake建表依赖Spark生态和事务日志,支持流批一体,区分标准表和外部表。

1. 标准表(Managed Table,事务优先)
sql 复制代码
-- 先配置Delta扩展(Spark环境)
SET spark.sql.extensions = io.delta.sql.DeltaSparkSessionExtension;

CREATE TABLE [IF NOT EXISTS] 表名 (
  字段名 类型 [COMMENT '注释'],
  ...,
  分区字段 类型
)
USING DELTA  -- 指定Delta格式
PARTITIONED BY (分区字段)  -- 分区配置
[LOCATION '存储路径']  -- 可选:不指定则使用默认路径
TBLPROPERTIES (
  'delta.logRetentionDuration' = '7 days'  -- 事务日志保留时间(可选)
);
2. 外部表(External Table,数据共享)
sql 复制代码
CREATE EXTERNAL TABLE [IF NOT EXISTS] 表名 (
  字段名 类型 [COMMENT '注释'],
  ...
)
USING DELTA
LOCATION '已有数据路径'  -- 必须指定:复用现有数据
TBLPROPERTIES ('delta.autoOptimize.optimizeWrite' = 'true');  -- 自动优化小文件(可选)

Paimon建表基于LSM-Tree架构,需指定主键、合并策略,支持主键表和Append-Only表。

1. 主键表(Primary Key Table,实时更新)
sql 复制代码
-- 先创建Paimon Catalog(Flink环境)
CREATE CATALOG paimon_catalog WITH (
  'type' = 'paimon',
  'warehouse' = '存储路径',  -- 数据仓库根路径
  'hive-metastore-uri' = 'thrift://hive-metastore:9083'  -- 对接Hive Metastore(可选)
);
USE CATALOG paimon_catalog;

CREATE TABLE [IF NOT EXISTS] 表名 (
  字段名 类型 [COMMENT '注释'],
  ...,
  主键字段1 类型,
  主键字段2 类型,  -- 支持复合主键
  分区字段 类型
)
WITH (
  'primary-key' = '主键字段1,主键字段2',  -- 必选:主键定义
  'partition' = '分区字段',  -- 可选:分区配置
  'merge-engine' = 'deduplicate',  -- 合并策略(去重/部分更新/聚合)
  'changelog-producer' = 'input'  -- 生成变更日志(供下游消费,可选)
);
2. Append-Only表(仅追加,日志场景)
sql 复制代码
CREATE TABLE [IF NOT EXISTS] 表名 (
  字段名 类型 [COMMENT '注释'],
  ...,
  分区字段 类型
)
WITH (
  'partition' = '分区字段',  -- 可选:分区配置
  'write-mode' = 'append-only',  -- 必选:仅追加模式
  'file.format' = 'parquet'  -- 存储格式(默认parquet,可选)
);

核心语法对比总结

数据湖 核心标识 必选配置项 表类型区分参数
Hudi USING HUDI 主键(recordkey)、表类型(table.type) hoodie.table.type = MERGE_ON_READ/COPY_ON_WRITE
Iceberg USING ICEBERG 分区字段、Catalog扩展配置 隐藏分区用GENERATED ALWAYS AS
Delta Lake USING DELTA (无强制,但事务依赖_delta_log 外部表用EXTERNAL关键字
Paimon WITH属性配置 主键表需primary-key、合并策略 write-mode = append-only(仅追加表)

核心语法聚焦"表类型标识+关键属性配置",实际使用时需结合计算引擎的环境配置(如Spark/Flink扩展、Catalog)。

相关推荐
AI行业应用研究11 分钟前
会务问答机器人落地拆解:三级路由、知识库组织与防幻觉——会务小程序能自己回答参会者提问吗?
大数据·人工智能·安全·小程序·架构
合米AI SOP系统14 分钟前
医疗器械|组件组装工位,合米科技AI SOP视觉防错系统满足高合规要求下的精益生产
大数据·人工智能·科技
大大大大晴天️15 分钟前
大数据数据治理体系建设:从平台能力到组织闭环的完整蓝图
大数据·数据治理
机核研创社15 分钟前
双头全自动接橡筋机工作原理与核心参数详解:内裤橡筋环接工序的自动化改造
大数据·人工智能·自动化
峥嵘life19 分钟前
2026免费的 opencode 使用分享:Windows端 + 服务器CLI 实战总结
android·大数据·开发语言
蓝速科技23 分钟前
数字人一体机芯片选型:RK3576 与 X86 场景化对比指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
金融小师妹44 分钟前
事件驱动分析:美联储决议临近,黄金弱势运行的AI政策定价框架
大数据·eclipse·时序数据库
IT毕设实战小研1 小时前
基于大数据的人工智能社交媒体情绪分析与可视化的设计与实现
大数据·信息可视化·数据挖掘·数据分析·课程设计
像豆芽一样优秀1 小时前
用 Codex + 阿里云 DataWorks MCP 实现数仓自动化
大数据·人工智能
峥嵘life1 小时前
2026华为AI码道 CodeArts 使用分享:Windows端 + 服务器CLI 实战总结
android·大数据·开发语言·python