Paimon 是一种支持构建实时湖仓架构的湖存储格式,可同时兼容 Flink 和 Spark 的流批处理操作。该格式创新性地融合了湖存储格式与 LSM(日志结构合并树)结构,将实时流更新能力引入湖仓架构,支持高吞吐写入和低延迟查询。
全域数据集成 DataSail 的 Paimon 数据源支持半托管的 EMR Hive Catalog 和全托管的 EMR Serverless Hive Catalog (即LAS Catalog,可使用 EMR Serverless Spark 来操作,兼容 Hive Catalog)。本文将为您介绍 Paimon 数据源的配置操作。
date
,则主键必须包含 date
字段(如主键可以是 id,date
)。job.common.checkpoint_interval
高级参数来自行调整快照周期(单位为毫秒)。EMR Hive 和 Serverless Hive Catalog 引擎相关使用前提,可参见 配置 Hive 数据源 的 使用前提 部分,需注意填写用户的 AKSK 信息在对应数据库中的权限、引擎实例网络信息与独享集成资源组网络的互访性(即 VPC 和安全组相关设置)。
数据类型 | 描述 |
---|---|
BOOLEAN | 布尔类型,支持三值逻辑(TRUE、FALSE 和 UNKNOWN) |
CHAR | 固定长度字符串的数据类型。 |
VARCHAR | 可变长度字符串的数据类型。 |
STRING | STRING 是 VARCHAR(2147483647) 的同义词(即默认支持最大长度)。 |
BINARY | 固定长度二进制字符串的数据类型(即字节序列)。 |
VARBINARY | 可变长度二进制字符串数据类型(即字节序列)。 |
BYTES | BYTES是VARBINARY(2147483647)的同义词。 |
DECIMAL | 具有固定精度和小数位数的十进制数字数据类型。
默认精度 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 | 无时区的时间数据类型,格式为 时:分:秒[.小数部分],最高支持纳秒级精度。 |
TIMESTAMP | 无时区的时间戳数据类型,格式为 年-月-日 时:分:秒[.小数部分],最高支持纳秒级精度。 |
TIMESTAMP WITH LOCAL TIME ZONE | 带本地时区的时间戳数据类型,格式:年-月-日 时:分:秒[.小数部分] 时区,最高支持纳秒级精度。 |
ARRAY | 同类型元素数组的数据类型。 |
MAP<kt, vt>(仅限通道作业) | 键值映射表数据类型。
该类型表示一个将键(包含NULL值)映射到值(包含 NULL 值)的关联容器,且保证键的唯一性——每个键最多只能对应一个值。 |
新建数据源操作详见配置数据源,以下为您介绍 Paimon 数据源不同方式接入的配置相关信息。
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
EMR Hive Catalog 接入方式
参数 | 说明 |
---|---|
基本配置 | |
| Paimon |
| Catalog 接入方,可选 EMR Hive Catalog(半托管)或 Serverless Hive Catalog(全托管) |
| 数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。 |
参数配置 | |
*认证方式 | 访问 Paimon 数据源时,支持使用 Kerberos 认证的身份认证方式;若访问时无需认证,则认证方式选择无。 |
*EMR 集群 ID | |
*数据库名 | 下拉选择集群环境中,已创建的 Paimon 表所属的数据库名称。 |
*Hive 版本号 | 依据已选择的 EMR Hadoop 集群,自动展现集群中包含的 Hive 版本。 |
*Access Key ID | 输入有权限操作所选 EMR Hive 集群库表的 Access Key ID 信息。 |
*Secret Access Key | 有权限操作所选 EMR Hive 集群库表的 Secret Key 信息。与 Access Key ID 配套使用,类似登录密码,用于签名您的访问参数,以防被篡改。 |
*keyTab文件 | 认证方式选择 kerberos 认证时,需要将 keyTab 配置文件上传。 |
*conf文件 | 认证方式选择 kerberos 认证时,需要将 conf 配置文件上传。 |
*principal | 认证方式为 Kerberos 认证时,需输入用于认证的 Principal 身份信息。 |
| 目前仅支持 hive 类型,不可更改 |
扩展配置 | Paimon Catalog 获取表、建表时额外可选参数(全局生效),以 JSON 格式定义,取值可参见 Paimon 官方文档。 |
EMR Serverless Hive Catalog 接入方式
参数 | 说明 |
---|---|
基本配置 | |
| Paimon |
| Catalog 接入方,可选 EMR Hive Catalog(半托管)或 Serverless Hive Catalog(全托管) |
| 数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。 |
参数配置 | |
| 输入有权限操作 EMR Serverless 服务的 Access Key ID 信息。 注意 填写的 AK、SK 信息,需拥有以下相应的权限:
|
| 有权限操作所选 EMR Serverless 集群库表的 Secret Key 信息。与 Access Key ID 配套使用,类似登录密码,用于签名您的访问参数,以防被篡改。 |
*数据库名 | 下拉选择集群环境中,已创建的 Paimon 表所属的数据库名称。 |
| 目前仅支持 hive 类型,不可更改 |
扩展配置 | Paimon Catalog 获取表、建表时额外可选参数(全局生效),以 JSON 格式定义,取值可参见 Paimon 官方文档。 |
Paimon 数据源测试连通性成功后,进入到数据开发界面,开始新建 Paimon 相关通道任务。新建任务方式详见离线数据同步、流式数据同步。
任务创建成功后,您可根据实际场景,配置 Paimon 相关通道任务。
说明
对于通道作业,需要提前在 Catalog 的数据库建好相关 Paimon 表;
而对于解决方案整库同步作业,我们可以根据源表的表结构,自动建立相关 Paimon 目标表。
EMR Catalog 的建表方式参见:E-MapReduce / 组件操作指南 / Paimon
EMR Serverless Catalog 的建表方式参见:E-MapReduce / 组件操作指南 / Spark(仅适用于EMR Serverless Spark 形态)
数据目标类型选择 Paimon,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
参数 | 说明 |
---|---|
*目标类型 | 下拉选择 Paimon 数据源类型。 |
*数据源名称 | 已在数据源管理中注册成功的 Paimon 数据源,下拉可选。 |
*数据表 | 选择需要写入数据的 Paimon 表名称信息,下拉可选。 |
数据写入方式 | 下拉选择目标数据写入方式,支持以下两种写入方式:
|
Paimon 流式写只支持普通通道的 DSL 模式和解决方案离线/实时整库同步配置。
如图为解决方案实时整库同步的页面,配置采集 PostgreSQL 的变更记录(WAL 日志)并实时写入对应的 Paimon 表。
解决方案支持自动建立目标 Paimon 表,任务使用配置更为便捷。操作详见 离线整库同步(新版)、实时整库同步(新版)。
对于批式读 Paimon 的通道作业,我们可以选择已注册的 Paimon 数据源名称,以及对应的 Paimon 数据表。
对于分区表,还可以打开 “分区筛选” 选项,支持添加多个筛选读取的分区字段名,当且仅当数据符合分区筛选条件时,才会输出到下游目标表。
数据来源选择 Paimon,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
参数 | 说明 |
---|---|
*数据源类型 | 下拉选择 Paimon 数据源类型。 |
*数据源名称 | 已在数据源管理中注册成功的 Paimon 数据源,下拉可选。 |
*数据表 | 选择需要采集的数据表名称信息,目前单个任务只支持将单表的数据采集到一个目标表中。 |
切分键 | 据配置的字段进行数据分片,建议使用主键或有索引的列作为切分键:
说明 目前仅支持类型为整型或字符串的字段作为切分建。 |
分区筛选 | 如果读取的 Paimon 表为分区表形式,您可打开分区筛选框,填写对应的分区内容信息,当且仅当数据符合分区筛选条件时,才会输出到下游目标表。 说明
|
数据来源和目标端配置完成后,需要指定来源和目标端的字段映射关系,根据字段映射关系,数据集成任务将源端字段中的数据,写入到目标端对应字段中。
字段映射支持选择基础模式和转换模式配置映射:
注意
基础模式和转换模式不支持互相切换,模式切换后,将清空现有字段映射中所有配置信息,一旦切换无法撤销,需谨慎操作。
转换模式:
字段映射支持数据转换,您可根据实际业务需求进行配置,将源端采集的数据,事先通过数据转换后,以指定格式输入到目标端数据库中。
转换模式详细操作说明详见4.1 转换模式
在转换模式中,你可依次配置:来源节点、数据转换、目标节点信息:
配置节点 | 说明 |
---|---|
来源节点 | 配置数据来源 Source 节点信息:
配置完成后,单击确认按钮,完成来源节点配置。 |
数据转换 | 单击数据转换右侧添加按钮,选择 SQL 转换方式,配置转换信息和规则:
配置完成后,单击确认按钮,完成数据转换节点配置。SQL 脚本示例详见4.1.2 添加转换节点。 |
目标节点 | 配置目标节点 Sink 信息:
配置完成后,单击确认按钮,完成目标节点配置。 |
基础模式:
注意
字段映射名称配置时,Paimon 目标表字段名仅支持小写。
您可通过以下三种方式操作字段映射关系:
job.reader.
前缀,写参数需要加上 job.writer.
前缀。writer.parameter
下,直接输入参数名称和参数值。高级参数 Key | 高级参数 Value |
---|---|
job.reader.properties | 运行时动态设置 Paimon 表的属性(参见 https://paimon.apache.org/docs/0.8/maintenance/configurations/),格式为 Map<String, String> 类型的 JSON 字符串 |
job.reader.limit | 限制要读取的行数,通常用于数据抽样或测试 |
高级参数 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 分钟)。 |
在解决方案的刷新目标表映射界面,我们可以填入一些高级参数来控制建表行为,详见 实时整库同步。
高级参数 Key | 高级参数 Value |
---|---|
solution.writer.common.ddl.buckets_num | 目标表的分桶(bucket)数。如果不设置,默认为 -1(动态 bucket)。 |
solution.writer.paimon.ddl.bucket_keys | 目标表的分桶键(bucket key)。如果有多个字段,可用半角逗号分隔(例如 id,name)。 |
solution.writer.paimon.ddl.options | 建表时的各类可选参数(参见 https://paimon.apache.org/docs/0.8/maintenance/configurations/),格式为 Map<String, String> 类型的 JSON 字符串 |