当前位置: 首页 > news >正文

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

在这里插入图片描述

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

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

1. MOR表(Merge-On-Read,实时写入优先)
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,读取优先)
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. 基础分区表(显式分区)
-- 先配置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. 隐藏分区表(分区字段透明)
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,事务优先)
-- 先配置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,数据共享)
CREATE EXTERNAL TABLE [IF NOT EXISTS] 表名 (字段名 类型 [COMMENT '注释'],...
)
USING DELTA
LOCATION '已有数据路径'  -- 必须指定:复用现有数据
TBLPROPERTIES ('delta.autoOptimize.optimizeWrite' = 'true');  -- 自动优化小文件(可选)

四、Paimon 核心建表语法(基于Flink SQL)

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

1. 主键表(Primary Key Table,实时更新)
-- 先创建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表(仅追加,日志场景)
CREATE TABLE [IF NOT EXISTS] 表名 (字段名 类型 [COMMENT '注释'],...,分区字段 类型
)
WITH ('partition' = '分区字段',  -- 可选:分区配置'write-mode' = 'append-only',  -- 必选:仅追加模式'file.format' = 'parquet'  -- 存储格式(默认parquet,可选)
);

核心语法对比总结

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

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

http://www.dtcms.com/a/557026.html

相关文章:

  • 【高阶数据结构】红黑树
  • 许昌网站制作公司百度指数数据分析平台入口
  • 【笔记】解决 ComfyUI 安装 comfy-mtb 节点后 “Face restoration models not found.” 报错
  • 简洁企业网站模板卖水果网站模板
  • Nginx缓存机制优化:FastCGI缓存与浏览器缓存
  • 襄阳万家灯火网站建设爱用建站平台
  • 3.2.2.SpringMVC简介
  • 帝国cms影视网站模板网站app的区别
  • Rust 结构体方法(Methods):为数据附加行为
  • Android Cursor AI代码编辑器
  • git add 一条命令太长换行
  • 数据仓库与传统数据库开发工具架构差异:Web 架构 vs 客户端工具
  • 百度网站快速排名公司营销策略ppt模板
  • 外骨骼机器人:下肢助力走路,减负 30% 的硬核机械魔法
  • Linux基础I/O-打开新世界的大门:文件描述符的“分身术”与高级重定向
  • 用Python来学微积分25-微积分中的函数奥秘:单调性、极值与最值
  • 免费信息网站排名做动画视频的网站有哪些
  • 从零搭建多子网 DHCP 服务:CentOS 双网卡多作用域实战与原理解析
  • 再议c语言的直接访问和间接访问
  • 从零开始的QT开发指南:(一)背景、特性与环境搭建
  • 网站购物车实现wordpress怎么调用分类的文章
  • oracle 19c搭建dataguard(ADG)全过程
  • 网站集群建设方案兰州免费网站建设
  • 低成本低成本低成本
  • 机器学习核心概念详解(回归、分类和聚类)
  • 基于SpringBoot+Vue的零食仓库管理系统(redis缓存、摄像头、扫描二维码)
  • ant design 做网站wordpress 上传文件名
  • 跨网络互联技术(加密算法)
  • uniapp/flutter中实现苹果IOS 26 毛玻璃效果、跟随滑动放大动画
  • I.MX6U 启动方式详解