业务场景
通过 DataInLong 数据集成将业务数据源实时导入至 DLC iceberg 表的过程中,伴随着实时同步过程的推进,目标系统端会不断生成小文件。对于目标系统内已生成的小文件,基于周期合并的方式可避免由于小文件的累积造成目标系统 DLC 引擎查询效率恶化。
操作场景
本文以 MySQL 实时同步至 DLC iceberg 表为例,介绍实时任务配置及小文件合并操作实践。
操作步骤
创建目标表
CREATE TABLE IF NOT EXISTS`db_name`.`new_table_name`(`column_name1` column_type1,`column_name2` column_type2);
配置项目空间
说明:
1. 进入 DataInLong 控制台,单击项目列表 > 新建,新建项目空间。
2. 您可以参考下表配置项目空间信息。
参数 | 说明 |
项目名称/标识 | 项目命名与唯一标识,其中唯一标识创建后不可修改。 |
高级设置 - 项目成员 | 为此创建的项目中添加其他项目成员,创建者默认加入项目空间。 |
成员角色 | 批量为项目成员配置角色(此处默认为前面添加的成员添加统一的角色,后续可项目管理模块修改)。 |
配置集成资源组
1. 进入 DataInLong 控制台 选择集成资源并单击创建,进入集成资源组购买页。
说明
2. 购买集成资源组。
说明
离线资源包与实时资源包可根据实际数据情况配置规格、以及数量。
资源组网络建议选择 MySQL 和 DLC 所在网络;若 MySQL 和 DLC 不在一个 VPC 环境,可为 VPC 配置开通公网,详细操作参见 资源组配置公网。
3. 购买完成后,返回控制台并关联资源组与项目空间。
说明
若在购买页面内已经关联资源组与项目空间,可忽略此步骤。
配置数据源
1. 配置 MySQL 数据源。
进入项目管理模块,选择数据源管理 > 新建数据源 > 选择 MySQL。以 MySQL 数据源为例,数据连通性测试成功后,单击保存。
2. 配置 DLC 数据源。
进入 项目管理模块,选择数据源管理 > 新建数据源 > 选择 DLC,配置数据源参数,并在连通性测试成功后,即可单击保存。
参数 | 说明 |
JDBC URL | 格式参考: jdbc:dlc:dlc.internal.tencentcloudapi.com?task_type=SparkSQLTask&database_name=&datasource_connection_name=DataLakeCatalog®ion=ap-beijing&data_engine_name=test_engine 若需要使用小文件合并,数据源的访问域名必须使用 dlc.internal.tencentcloudapi.com,task_type 必须使用 SparkSQLTask,data_engine_name 指定的引擎会用于实时同步后的小文件合并。注意: 小文件合并会使用此处配置的 DLC 数据引擎并在合并的时候占用部分资源,请合理配置资源,如果不启动小文件合并,该 DLC 引擎不会被使用。 |
secretId/secretKey |
配置实时同步任务
1. 创建任务。
进入数据集成模块,创建实时同步任务,在弹出的提示框中输入任务名称和备注,选择 画布模式或表单模式,并单击完成。本介绍以画布模式为例。
2. 编辑任务。
单击新建的实时同步任务名称,进入任务编辑界面,通过拖拽分别新建读取数据源和写入数据源,并通过连线指定数据流向。
3. 配置 MySQL 节点。
双击画布中的 MySQL 节点,对读取数据源进行配置。如下图选择需要同步的数据库表,读取模式选择全量模式,完成后单击保存。
4. 配置 DLC 节点。
双击画布中的 DLC 节点,对 DLC 写入数据源进行配置。如下图选中需要写入的库表,根据业务需求选择写入模式,并指定唯一键。例子中指定唯一键为 ID 和 MySQL 的主键保持一致。
下拉至底部,配置 MySQL 与 DLC 表字段映射,完成后单击保存。
5. 任务保存与提交。
配置完节点后,单击任务数据配置集成资源组。此资源组为 配置集成资源组 步骤3中已关联至本空间的资源组。
完成后,单击提交按钮,并在弹窗口中勾选立即启动。
6. 查看并运维实时任务。
提交任务后,可进入实时运维页面查看并监控任务状态。
单击运行监控,可查看当前任务数据指标统计、以及配置监控告警等。
存量任务处理
1. 如果存量实时同步任务需要添加小文件合并功能,首先需按照步骤一修改表属性。
说明
ALTER TABLE
db_name
.new_table_name
SET TBLPROPERTIES ('write.compact.enable' = 'true', 'write.compact.snapshot.interval' = '20');其中合并周期参数‘write.compact.snapshot.interval’需要根据业务需求进行调整。如果存量表已经存在大量的小文件,推荐手动将小文件合并到一定数量之下后,再启动定时合并功能。
2. 将实时同步任务停止再运行即可。