本文介绍如何通过实时计算Flink部署JAR作业,实现从DLF 1.0(旧版)迁移至DLF的操作流程。
前提条件
已创建Flink全托管工作空间,详情请参见开通实时计算Flink版。
已创建DLF 1.0(旧版)数据目录,详情请参见元数据管理。
操作步骤
步骤一:创建JAR作业
登录实时计算控制台。
单击Flink全托管工作空间列表中的工作空间名称,进入对应的工作空间。
在左侧菜单栏,选择
,进入作业运维页面。单击部署作业,选择JAR作业,在弹窗中填写以下配置项。
参数
描述
本文示例
部署模式
固定为批模式。
批模式
部署名称
填写对应的JAR作业英文名。
migrate_paimon
引擎版本
选择实时计算引擎版本。
vvr-8.0.11-flink-1.17
JAR URI
上传paimon-flink-action JAR包。
上传paimon-flink-action-1.3-SNAPSHOT-for-clone-20250909.jar包。若上传过,可在下拉菜单中选择。
Entry Point Class
程序的入口类。
不填写。
Entry Point Main Arguments
传入参数,在主方法里调用该参数。
此处不填写。具体参数根据不同作业而定,详见步骤二。
附加依赖文件
指定要附加的依赖文件的路径或文件名。
上传paimon-ali-vvr-8.0-vvp-1.3-ali-SNAPSHOT-for-clone-20250909.jar包。若上传过,可在下拉菜单中选择。
说明更多部署参数说明,请参见部署JAR作业。
单击部署,完成JAR作业的创建。
步骤二:调整参数并启动作业
Flink作业可支持迁移整个Catalog、整个数据库或单个表。根据不同作业目的,调整Entry Point Main Arguments
参数。
在作业运维列表,选择刚创建的JAR作业,单击详情,查看部署详情。
在部署详情页,单击右上角的编辑,重新填写
Entry Point Main Arguments
参数。根据您的源表类型,选择不同的方式:
Clone Hive表
Hive表包括Hive表 (Parquet,ORC,Avro)、Iceberg表、Hudi表,迁移后为Paimon Append表。
clone --parallelism '<parallelism>' --database '<database-name>' --table '<table-name>' --catalog_conf 'metastore=dlf' --catalog_conf "warehouse=<warehouse>" --catalog_conf 'dlf.catalog.id=<dlf.catalog.id>' --catalog_conf 'dlf.catalog.accessKeyId=<dlf.catalog.accessKeyId>' --catalog_conf 'dlf.catalog.accessKeySecret=<dlf.catalog.accessKeySecret>' --catalog_conf 'dlf.catalog.endpoint=<dlf.catalog.endpoint>' --catalog_conf 'dlf.catalog.region=<dlf.catalog.region>' --catalog_conf 'fs.oss.endpoint=<fs.oss.endpoint>' --catalog_conf 'fs.oss.accessKeyId=<fs.oss.accessKeyId>' --catalog_conf 'fs.oss.accessKeySecret=<fs.oss.accessKeySecret>' --target_database '<target-database-name>' --target_table '<target-table-name>' --target_catalog_conf 'metastore=rest' --target_catalog_conf 'warehouse=<target-warehouse>' --target_catalog_conf 'uri=<dlf.next.endpoint>' --target_catalog_conf 'token.provider=dlf' --target_catalog_conf 'dlf.access-key-id=<dlf.access-key-id>' --target_catalog_conf 'dlf.access-key-secret=<dlf.access-key-secret>' --clone_from 'hive' --where '<filter-spec>'
Clone Paimon表
clone --parallelism '<parallelism>' --database '<database-name>' --table '<table-name>' --catalog_conf 'metastore=dlf' --catalog_conf "warehouse=<warehouse>" --catalog_conf 'dlf.catalog.id=<dlf.catalog.id>' --catalog_conf 'dlf.catalog.accessKeyId=<dlf.catalog.accessKeyId>' --catalog_conf 'dlf.catalog.accessKeySecret=<dlf.catalog.accessKeySecret>' --catalog_conf 'dlf.catalog.endpoint=<dlf.catalog.endpoint>' --catalog_conf 'dlf.catalog.region=<dlf.catalog.region>' --catalog_conf 'fs.oss.endpoint=<fs.oss.endpoint>' --catalog_conf 'fs.oss.accessKeyId=<fs.oss.accessKeyId>' --catalog_conf 'fs.oss.accessKeySecret=<fs.oss.accessKeySecret>' --target_database '<target-database-name>' --target_table '<target-table-name>' --target_catalog_conf 'metastore=rest' --target_catalog_conf 'warehouse=<target-warehouse>' --target_catalog_conf 'uri=<dlf.next.endpoint>' --target_catalog_conf 'token.provider=dlf' --target_catalog_conf 'dlf.access-key-id=<dlf.access-key-id>' --target_catalog_conf 'dlf.access-key-secret=<dlf.access-key-secret>' --clone_from 'paimon' --where '<filter-spec>'
配置项说明如下:
配置项
描述
是否必填
备注
parallelism
作业的并发度。
否
示例:16
database-name
需要克隆的DLF 1.0(旧版)数据库名。
否
示例:my_database
table-name
需要克隆的DLF 1.0(旧版)数据表名。
否
示例:my_table
warehouse
需要克隆的DLF 1.0(旧版)数据目录(Catalog)的 OSS仓库路径。
是
格式为
oss://<bucket>/<object>
。其中:bucket:表示您创建的OSS Bucket名称。
object:表示您存放数据的路径。
请在OSS管理控制台上查看您的bucket和object名称。
dlf.catalog.id
DLF 1.0(旧版)数据目录ID。
是
请在DLF 1.0(旧版)控制台上查看数据目录对应的ID,具体操作请参见数据目录。
dlf.catalog.accessKeyId
访问DLF服务所需的Access Key ID。
是
详情请参见查看RAM用户的AccessKey信息。
dlf.catalog.accessKeySecret
访问DLF服务所需的Access Key Secret。
是
dlf.catalog.endpoint
DLF服务的Endpoint。
是
详情请参见已开通的地域和访问域名。
示例:dlf-vpc.cn-hangzhou.aliyuncs.com。
dlf.catalog.region
DLF所在区域。
是
详情请参见已开通的地域和访问域名。请和dlf.catalog.endpoint选择的地域保持一致。
示例:cn-hangzhou。
fs.oss.endpoint
OSS服务的连接地址。
是
获取方法请参见OSS地域和访问域名。
OSS示例:oss-cn-hangzhou-internal.aliyuncs.com。
OSS-HDFS示例:cn-hangzhou.oss-dls.aliyuncs.com
fs.oss.accessKeyId
拥有OSS读写权限的阿里云账号或RAM账号的Accesskey ID。
是
详情请参见查看RAM用户的AccessKey信息。
fs.oss.accessKeySecret
拥有OSS读写权限的阿里云账号或RAM账号的Accesskey secret。
是
target-database-name
克隆的DLF数据库名。
否
示例:target_database
target-table-name
克隆的DLF数据表名。
否
示例:target_table
target-warehouse
克隆的DLF数据目录(Catalog)名称。
是
dlf.next.endpoint
DLF服务的Endpoint。
是
详情请参见服务接入点。
示例:cn-hangzhou-vpc.dlf.aliyuncs.com
dlf.access-key-id
访问DLF服务所需的Access Key ID。
是
详情请参见查看RAM用户的AccessKey信息。
dlf.access-key-secret
访问DLF服务所需的Access Key Secret。
是
clone_from
克隆的源表类型。
是
'hive' 或 'paimon'
filter-spec
克隆时的分区过滤条件。
否
dt = '2024-10-01'
重要若需迁移整个数据库,请勿设置
table-name
和target-table-name
。若需迁移整个数据目录,请勿设置
database-name
和target-database-name
。整个数据目录或数据库迁移时可以选择排除部分表,通过
--excluded_tables <excluded-tables-spec>
设置。示例:my_db.my_tbl,my_db2.my_tbl2。单表迁移时请勿设置。
完成参数配置后,单击部署详情页的保存。
在作业运维页面,单击该JAR作业的启动,保持默认参数,启动作业。
步骤三:验证作业结果
当作业状态变成已完成时,登录DLF 1.0(旧版)控制台和DLF 控制台,检查是否迁移成功。
若是整个Catalog迁移:检查DLF中的Catalog结构以及内部的库、表是否与DLF 1.0(旧版) 保持一致。
若是整个数据库迁移:检查DLF中的库、表结构是否与DLF 1.0(旧版) 保持一致。
若是单个数据表迁移:检查DLF中的表结构是否与DLF 1.0(旧版) 保持一致。