You need to enable JavaScript to run this app.
导航
配置 Paimon 数据源
最近更新时间:2025.05.14 15:00:41首次发布时间:2025.05.14 15:00:41
我的收藏
有用
有用
无用
无用

Paimon 是一种支持构建实时湖仓架构的湖存储格式,可同时兼容 Flink 和 Spark 的流批处理操作。该格式创新性地融合了湖存储格式与 LSM(日志结构合并树)结构,将实时流更新能力引入湖仓架构,支持高吞吐写入和低延迟查询。
全域数据集成 DataSail 的 Paimon 数据源支持半托管的 EMR Hive Catalog 和全托管的 EMR Serverless Hive Catalog (即LAS Catalog,可使用 EMR Serverless Spark 来操作,兼容 Hive Catalog)。本文将为您介绍 Paimon 数据源的配置操作。

1 支持的 Paimon 版本

  • 推荐使用 Paimon 0.8.2 的版本,其余版本 Paimon 表的读写同样支持,但更高版本特有的功能可能存在受限情况。
  • 在元数据 Catalog 上,支持 Hive 3.x 版本的火山引擎 E-MapReduce(EMR)Hive Catalog 和 EMR Serverless Hive Catalog。

2 使用限制

  • 子账号新建数据源时,需要有项目的管理员角色,方可以进行新建数据源操作。各角色对应权限说明,详见:管理成员
  • 离线任务可视化方式支持批式读/写 Paimon 表;流式任务仅支持 DSL 模式流式写 Paimon 表,暂不支持流式读 Paimon 表;离线整库同步、实时整库同步支持写入 Paimon 表。
  • 普通通道任务写入 Paimon 表前,需要提前建好相关 Paimon 表;解决方案离线/实时整库同步模式支持自动创建 Paimon 表。
  • 建表过程中,对于主键表,如果同时也定义了分区键,那么要求表的主键必须包含所有分区键,但主键和分区键不能完全一致。例如分区键为 date,则主键必须包含 date 字段(如主键可以是 id,date)。
  • 建表过程中,对于主键表,如果同时也定义了分桶键,那么要求表的主键必须包含所有分桶键,但分区键不允许包含分桶键。如果未定义分桶键,则默认分桶键与主键保持一致。
  • 实时写 Paimon 表的场景时,必须开启快照功能(默认已开启,快照周期为 5min)。由于快照完成后才会执行 Commit(提交)动作,因此该高级参数决定了数据的对外可见周期,您可通过 job.common.checkpoint_interval 高级参数来自行调整快照周期(单位为毫秒)。
  • 字段映射名称配置时,Paimon 目标表字段名仅支持小写。

3 使用前提

EMR Hive 和 Serverless Hive Catalog 引擎相关使用前提,可参见 配置 Hive 数据源使用前提 部分,需注意填写用户的 AKSK 信息在对应数据库中的权限、引擎实例网络信息与独享集成资源组网络的互访性(即 VPC 和安全组相关设置)。

4 支持的字段类型

数据类型

描述

BOOLEAN

布尔类型,支持三值逻辑(TRUE、FALSE 和 UNKNOWN)

CHAR
CHAR(n)

固定长度字符串的数据类型。
该类型可通过 CHAR(n) 声明,其中 n 表示字符的代码点数量(即字符长度)。
n 的取值范围必须介于 1 到 2,147,483,647(含边界值)之间。若未指定长度,则默认 n = 1

VARCHAR
VARCHAR(n)

可变长度字符串的数据类型。
该类型可通过 VARCHAR(n) 声明,其中 n 表示字符串的最大代码点数量(即最大字符长度)。
n 的取值范围必须介于 1 到 2,147,483,647(含边界值)之间。若未指定长度,则默认 n = 1。

STRING

STRING 是 VARCHAR(2147483647) 的同义词(即默认支持最大长度)。

BINARY
BINARY(n)

固定长度二进制字符串的数据类型(即字节序列)。
该类型可通过 BINARY(n) 声明,其中 n 表示字节的数量。
n 的取值范围必须介于 1 到 2,147,483,647(含边界值)之间。若未指定长度,则默认 n = 1。

VARBINARY
VARBINARY(n)

可变长度二进制字符串数据类型(即字节序列)。
该类型可通过VARBINARY(n)声明,其中n表示字节的最大数量。
n 的取值范围必须介于1到2,147,483,647之间(含边界值)。若未指定长度,则默认n等于1。

BYTES

BYTES是VARBINARY(2147483647)的同义词。

DECIMAL
DECIMAL(p)
DECIMAL(p, s)

具有固定精度和小数位数的十进制数字数据类型。
该类型可通过DECIMAL(p, s)声明,其中:

  • p 代表数字的总位数(精度),取值范围为1至38(含边界值);
  • s 代表小数点右侧的位数(小数位数),取值范围为 0 至 p(含边界值)。

默认精度 p=10,默认小数位数 s=0

TINYINT

1 字节有符号整数数据类型,取值范围:-128 至 127

SMALLINT

2 字节有符号整数数据类型,取值范围:-32,768 至 32,767

INT

4 字节有符号整数数据类型,取值范围:-2,147,483,648 至 2,147,483,647

BIGINT

8 字节有符号整数数据类型,取值范围:-9,223,372,036,854,775,808 至 9,223,372,036,854,775,807

FLOAT

4 字节单精度浮点数数据类型。该类型表示符合 IEEE 754 标准的 32 位浮点数(与 SQL 标准不同的是,此类型不接受任何参数)

DOUBLE

8 字节单精度浮点数数据类型。此类型不接受任何参数。

DATE

日期数据类型(年-月-日格式),取值范围:0000-01-01 至 9999-12-31。

说明

与 SQL 标准不同的是,本类型的年份范围从 0000 年开始。

TIME
TIME(p)

无时区的时间数据类型,格式为 时:分:秒[.小数部分],最高支持纳秒级精度。
取值范围:00:00:00.000000000 至 23:59:59.999999999。
该类型可通过 TIME(p) 声明,其中 p 表示秒的小数部分位数(精度),取值范围为 0 至 9(含边界值)。
若未指定精度,默认 p=0(即不带小数部分)

TIMESTAMP
TIMESTAMP(p)

无时区的时间戳数据类型,格式为 年-月-日 时:分:秒[.小数部分],最高支持纳秒级精度。
取值范围:0000-01-01 00:00:00.000000000 至 9999-12-31 23:59:59.999999999
该类型可通过 TIMESTAMP(p) 声明,其中 p 表示秒的小数部分位数(精度),p 的取值范围为 0 至 9(含边界值)。
若未指定精度,默认 p=6(即微秒级精度)

TIMESTAMP WITH LOCAL TIME ZONE
TIMESTAMP(p) WITH LOCAL TIME ZONE

带本地时区的时间戳数据类型,格式:年-月-日 时:分:秒[.小数部分] 时区,最高支持纳秒级精度。
取值范围:0000-01-01 00:00:00.000000000 +14:59 至 9999-12-31 23:59:59.999999999 -14:59
该类型填补了"无时区时间戳"和"固定时区时间戳"之间的空白,允许根据配置的会话时区来解释 UTC 时间戳。

ARRAY(仅限通道作业)

同类型元素数组的数据类型。
该类型可通过 ARRAY 声明,其中 t 表示数组元素的数据类型
与 SQL 标准相比,该数组类型的最大容量不可自定义,固定为 2,147,483,647 个元素,同时支持任意有效类型作为元素子类型。

MAP<kt, vt>(仅限通道作业)

键值映射表数据类型。
可通过MAP<kt, vt>声明该类型,其中:

  • kt 表示键元素的数据类型;
  • vt 表示值元素的数据类型。

该类型表示一个将键(包含NULL值)映射到值(包含 NULL 值)的关联容器,且保证键的唯一性——每个键最多只能对应一个值。
对元素类型无限制,但需要用户自行确保键的唯一性。

5数据同步任务开发

5.1 数据源注册

新建数据源操作详见配置数据源,以下为您介绍 Paimon 数据源不同方式接入的配置相关信息。
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

  • EMR Hive Catalog 接入方式

    参数

    说明

    基本配置

    • 数据源类型

    Paimon

    • 接入方式

    Catalog 接入方,可选 EMR Hive Catalog(半托管)或 Serverless Hive Catalog(全托管)

    • 数据源名称

    数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。

    参数配置

    *认证方式

    访问 Paimon 数据源时,支持使用 Kerberos 认证的身份认证方式;若访问时无需认证,则认证方式选择
    其中 Kerberos 认证需要您将 keyTab 文件、conf 文件上传至数据源配置界面及填写 principal 认证相关信息。

    *EMR 集群 ID

    下拉选择已创建成功的 EMR Hadoop 集群名称,若还未创建相关集群,您可前往 EMR-控制台创建。详见创建集群

    *数据库名

    下拉选择集群环境中,已创建的 Paimon 表所属的数据库名称。

    *Hive 版本号

    依据已选择的 EMR Hadoop 集群,自动展现集群中包含的 Hive 版本。

    *Access Key ID

    输入有权限操作所选 EMR Hive 集群库表的 Access Key ID 信息。
    可进入火山引擎,访问控制台的密钥管理界面,复制 Access key ID 填写到此处。如果为子用户,请联系主账号获取密钥。

    *Secret Access Key

    有权限操作所选 EMR Hive 集群库表的 Secret Key 信息。与 Access Key ID 配套使用,类似登录密码,用于签名您的访问参数,以防被篡改。

    *keyTab文件

    认证方式选择 kerberos 认证时,需要将 keyTab 配置文件上传。

    *conf文件

    认证方式选择 kerberos 认证时,需要将 conf 配置文件上传。

    *principal

    认证方式为 Kerberos 认证时,需输入用于认证的 Principal 身份信息。

    • Metastore 类型

    目前仅支持 hive 类型,不可更改

    扩展配置

    Paimon Catalog 获取表、建表时额外可选参数(全局生效),以 JSON 格式定义,取值可参见 Paimon 官方文档
    对于 Hadoop、Hive 参数,请添加 hadoop. 前缀。

  • EMR Serverless Hive Catalog 接入方式

    参数

    说明

    基本配置

    • 数据源类型

    Paimon

    • 接入方式

    Catalog 接入方,可选 EMR Hive Catalog(半托管)或 Serverless Hive Catalog(全托管)

    • 数据源名称

    数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。

    参数配置

    • Access Key ID

    输入有权限操作 EMR Serverless 服务的 Access Key ID 信息。
    解决方案自动建表时,表权限默认属于填写 Access Key 的用户。如果其他子用户需要访问该 Paimon 表,可进入数据湖服务 > 权限管理界面,请表权限 owner 对库表做授权操作,注意切换到库表所属的地域再进行操作。

    注意

    填写的 AK、SK 信息,需拥有以下相应的权限:

    • 需要有对应 Hive 库表的读写权限,主账号或数据库 Owner 可前往 LAS Catalog 控制台授权,详见 LAS Catalog 权限管理
    • 需要有 LAS Catalog 中设置的底层存储路径 TOS Bucket 桶读写权限。存储桶权限策略操作详见桶策略模板及参数说明
    • Secret Access Key

    有权限操作所选 EMR Serverless 集群库表的 Secret Key 信息。与 Access Key ID 配套使用,类似登录密码,用于签名您的访问参数,以防被篡改。

    *数据库名

    下拉选择集群环境中,已创建的 Paimon 表所属的数据库名称。

    • Metastore 类型

    目前仅支持 hive 类型,不可更改

    扩展配置

    Paimon Catalog 获取表、建表时额外可选参数(全局生效),以 JSON 格式定义,取值可参见 Paimon 官方文档
    对于 Hadoop、Hive 参数,请添加 hadoop. 前缀。

5.2 新建离线任务

Paimon 数据源测试连通性成功后,进入到数据开发界面,开始新建 Paimon 相关通道任务。新建任务方式详见离线数据同步流式数据同步

5.3 可视化配置说明

任务创建成功后,您可根据实际场景,配置 Paimon 相关通道任务。

5.3.1 Paimon 批式写

说明

对于通道作业,需要提前在 Catalog 的数据库建好相关 Paimon 表;
而对于解决方案整库同步作业,我们可以根据源表的表结构,自动建立相关 Paimon 目标表。
EMR Catalog 的建表方式参见:E-MapReduce / 组件操作指南 / Paimon
EMR Serverless Catalog 的建表方式参见:E-MapReduce / 组件操作指南 / Spark(仅适用于EMR Serverless Spark 形态)

数据目标类型选择 Paimon,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

参数

说明

*目标类型

下拉选择 Paimon 数据源类型。

*数据源名称

已在数据源管理中注册成功的 Paimon 数据源,下拉可选。
若还未建立相应数据源,可单击数据源管理按钮,前往创建 Hive 数据源。

*数据表

选择需要写入数据的 Paimon 表名称信息,下拉可选。

数据写入方式

下拉选择目标数据写入方式,支持以下两种写入方式:

  • 覆盖: 先清空原有数据再写入新数据;
  • 追加: 在原有数据之后追加写入新数据。

5.3.2 Paimon 流式写

Paimon 流式写只支持普通通道的 DSL 模式和解决方案离线/实时整库同步配置。
如图为解决方案实时整库同步的页面,配置采集 PostgreSQL 的变更记录(WAL 日志)并实时写入对应的 Paimon 表。

解决方案支持自动建立目标 Paimon 表,任务使用配置更为便捷。操作详见 离线整库同步(新版)实时整库同步(新版)

5.3.3 Paimon 批式读

对于批式读 Paimon 的通道作业,我们可以选择已注册的 Paimon 数据源名称,以及对应的 Paimon 数据表。
对于分区表,还可以打开 “分区筛选” 选项,支持添加多个筛选读取的分区字段名,当且仅当数据符合分区筛选条件时,才会输出到下游目标表。
数据来源选择 Paimon,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

参数

说明

*数据源类型

下拉选择 Paimon 数据源类型。

*数据源名称

已在数据源管理中注册成功的 Paimon 数据源,下拉可选。
若还未建立相应数据源,可单击数据源管理按钮,前往创建 Hive 数据源。

*数据表

选择需要采集的数据表名称信息,目前单个任务只支持将单表的数据采集到一个目标表中。

切分键

据配置的字段进行数据分片,建议使用主键或有索引的列作为切分键:

  • 如果表没有主键或者索引列,可以不配置该字段,同步任务不会进行分片,并以单并发的方式同步所有的数据;
  • 建议使用主键或有索引的列作为切分键,切分键配置没有索引的列同步任务会比较慢。

说明

目前仅支持类型为整型或字符串的字段作为切分建。

分区筛选

如果读取的 Paimon 表为分区表形式,您可打开分区筛选框,填写对应的分区内容信息,当且仅当数据符合分区筛选条件时,才会输出到下游目标表。
当同时需要读取多个分区数据时,您也可单击添加分区按钮,进行添加多个分区字段名的配置。分区内容可通过时间变量参数方式进行设置,详见平台时间变量与常量说明

说明

  1. 天级分区,若日期格式为:yyyyMMdd 如:20181017,则填写:${date}
  2. 天级分区,若日期格式为:yyyy-MM-dd 如:2018-11-17,则填写:${DATE}
  3. 小时分区填写${hour}
  4. 非时间分区填写固定的分区值
  5. 静态分区如App,只能输入一个分区内容的值
  6. 动态分区,分区内容不需要填写值,置空即可

5.3.4 字段映射

数据来源和目标端配置完成后,需要指定来源和目标端的字段映射关系,根据字段映射关系,数据集成任务将源端字段中的数据,写入到目标端对应字段中。
字段映射支持选择基础模式转换模式配置映射:

注意

基础模式和转换模式不支持互相切换,模式切换后,将清空现有字段映射中所有配置信息,一旦切换无法撤销,需谨慎操作。

  • 转换模式:
    字段映射支持数据转换,您可根据实际业务需求进行配置,将源端采集的数据,事先通过数据转换后,以指定格式输入到目标端数据库中。
    转换模式详细操作说明详见4.1 转换模式
    在转换模式中,你可依次配置:来源节点、数据转换、目标节点信息:

    配置节点

    说明

    来源节点

    配置数据来源 Source 节点信息:

    • 节点名称:自定义输入来源节点名称信息,只允许由数字、字母、下划线、-和.组成;且长度不能超过10。
    • 数据字段:通过自动添加、手动添加等方式添加数据来源字段信息。

    配置完成后,单击确认按钮,完成来源节点配置。

    数据转换

    单击数据转换右侧添加按钮,选择 SQL 转换方式,配置转换信息和规则:

    • 节点名称:自定义输入来源节点名称信息,只允许由数字、字母、下划线、-和.组成;且长度不能超过10。
    • SQL 脚本:输入 SQL 脚本转换规则,目前仅支持添加一个转换的 SQL 语句,且不能包括 “;”。

    配置完成后,单击确认按钮,完成数据转换节点配置。SQL 脚本示例详见4.1.2 添加转换节点

    目标节点

    配置目标节点 Sink 信息:

    • 节点名称:自定义输入来源节点名称信息,只允许由数字、字母、下划线、-和.组成;且长度不能超过10。
    • 数据字段:通过自动添加、手动添加等方式添加数据目标字段信息。

    配置完成后,单击确认按钮,完成目标节点配置。

  • 基础模式:

    注意

    字段映射名称配置时,Paimon 目标表字段名仅支持小写。

    您可通过以下三种方式操作字段映射关系:

    • 自动添加:单击自动添加按钮,根据两端数据表信息,可以自动填充来源和目标的字段信息。
    • 手动添加:单击手动添加按钮,可以手动编辑来源和目标的字段信息,可以逐个添加。
    • 同名映射:目标表字段,可通过源端字段同名映射的方式,填充目标表字段信息。
    • 移动\删除字段:您也可以根据需要移动字段映射顺序或删除字段。

6 高级参数说明

  • 对于通道任务,配置自定义参数设置下,且读参数需要加上 job.reader. 前缀,写参数需要加上 job.writer. 前缀。
  • 对于 DSL 任务,写参数请配置到 writer.parameter 下,直接输入参数名称和参数值。

6.1 读 Paimon 高级参数

高级参数 Key

高级参数 Value

job.reader.properties

运行时动态设置 Paimon 表的属性(参见 https://paimon.apache.org/docs/0.8/maintenance/configurations/),格式为 Map<String, String> 类型的 JSON 字符串

job.reader.limit

限制要读取的行数,通常用于数据抽样或测试

6.2 写 Paimon 高级参数

高级参数 Key

高级参数 Value

job.writer.properties

运行时动态设置 Paimon 表的属性(参见 https://paimon.apache.org/docs/0.8/maintenance/configurations/),格式为 Map<String, String> 类型的 JSON 字符串

job.writer.overwrite_partition

覆盖写特定的分区,当且仅当“写入模式”为“覆盖”时生效,格式为 Map<String, String> 类型的 JSON 字符串

job.common.checkpoint_interval

流作业 Flink 快照生成周期(单位为毫秒),默认为 300s(5 分钟)。
当流式写 Paimon 时,每次快照完成后才会进行数据提交(Commit)操作,因此较短的快照周期可以让新数据更快地被下游查到。
但是过短的快照周期会产生大量的小文件,导致性能和查询效率受到严重影响,请合理设置该值。

6.3 解决方案 Paimon 自动建表高级参数

在解决方案的刷新目标表映射界面,我们可以填入一些高级参数来控制建表行为,详见 实时整库同步

高级参数 Key

高级参数 Value

solution.writer.common.ddl.buckets_num

目标表的分桶(bucket)数。如果不设置,默认为 -1(动态 bucket)。

solution.writer.paimon.ddl.bucket_keys

目标表的分桶键(bucket key)。如果有多个字段,可用半角逗号分隔(例如 id,name)。
如果不设置,默认 bucket key 等同于主键;如果表不含主键,则默认会使用所有字段作为 bucket key。

solution.writer.paimon.ddl.options

建表时的各类可选参数(参见 https://paimon.apache.org/docs/0.8/maintenance/configurations/),格式为 Map<String, String> 类型的 JSON 字符串