本文以MaxCompute单表离线同步写入ClickHouse场景为例,为您介绍ClickHouse离线同步在数据源配置、网络联通、同步任务配置方面的最佳实践。
背景信息
云数据库ClickHouse是面向联机分析处理的列式数据库。数据集成支持从ClickHouse同步数据到其他目标端,也支持从其他目标端同步数据到ClickHouse。本文以MaxCompute单表离线同步写入ClickHouse为例,为您介绍ClickHouse离线同步的完整流程。
使用限制
ClickHouse单表离线同步仅支持阿里云ClickHouse。
前提条件
操作步骤
本文以数据开发(Data Studio)(新版)界面操作为例,演示离线同步任务配置。
一、创建离线同步节点
进入DataWorks工作空间列表页,在顶部切换至目标地域,找到已创建的工作空间,单击操作列的 ,进入Data Studio。
在左侧导航栏单击
,然后单击项目目录右侧的
,选择 ,自定义离线同步任务节点名称后,单击确认。
二、网络与资源配置
在网络与资源配置步骤,选择同步任务所使用的数据来源、资源组、数据去向。您可以为该任务分配任务资源占用CU数。
数据来源选择已添加的
MaxCompute
数据源。数据去向选择已添加的
ClickHouse
数据源。资源组选择已与
MaxCompute
和ClickHouse
数据源连通的资源组。您可以为该任务分配任务资源占用CU数。
在数据来源和数据去向卡片中单击测试连通性。
确保数据来源与数据去向均连通成功后,单击下一步。
三、配置数据来源与去向
配置数据来源(MaxCompute)参数
数据来源MaxCompute表的配置要点如下。
配置项 | 配置要点 |
数据源 | 默认显示上一步选择的MaxCompute数据源。如果您使用的是标准模式的DataWorks工作空间,会分别显示开发和生产项目的名称。 |
Tunnel资源组 | 本教程默认为公共传输资源,若您拥有独享Tunnel Quota,可下拉选择。 |
表 | 选择待同步的MaxCompute表。如果您使用的是标准类型的DataWorks工作空间,请确保在MaxCompute的开发环境和生产环境中存在同名且表结构一致的MaxCompute表。 说明 如果:
|
过滤方式 | 支持通过分区过滤和数据过滤。
|
分区信息 | 当过滤方式选择为分区过滤时需要配置,您可以填入分区列的取值。
|
分区不存在时 | 当分区不存在时,同步任务的处理策略,支持:
|
配置数据去向(ClickHouse)参数
数据去向ClickHouse表的配置要点如下。
配置项 | 配置要点 |
数据源 | 默认显示上一步选择的ClickHouse数据源。 |
表 | 选择待同步的Clickhouse表。建议对于要进行数据同步的表,ClickHouse数据源开发和生产环境保证具有相同的表结构。 说明 此处会展示ClickHouse数据源开发环境地的表列表,如果您的ClickHouse数据源开发和生产环境的表定义不同,则可能出现任务在开发环境配置正常但提交生产运行后报错表不存在、列不存在的问题。 |
主键或唯一键冲突处理 | 选择 |
导入前准备语句 | 您可以在执行数据同步任务的前后按需执行SQL语句。比如在按天进行数据同步前清理对应天分区的数据,保证本次数据写入前对应分区是无数据的。 |
导入后完成语句 | |
批量插入字节大小 | 数据同步写入ClickHouse时采用攒批写入方式,此处是攒批的字节数上限、条数上限。如果读取到的数据达到攒批的字节数上限或条数上限,则认为攒够一批,每攒够一批则写入一批数据到ClickHouse。 批量插入字节大小建议值为16777216(16MB),批量插入条数建议按照您单条记录的大小调整为一个较大值,从而依靠批量插入字节大小触发批次写入。 例如单条记录大小为1KB,批量插入字节大小设置为16777216(16MB),批量插入条数设置为20000(大于16MB/1KB=16384),则会通过批量插入字节大小触发写入,每达到16MB写入一次。 |
批量插入条数 | |
批量写入ClickHouse异常时 | 批量写入ClickHouse异常时,可以选择异常处理策略:
|
四、配置字段映射
选择数据来源和数据去向后,需要指定读取端和写入端列的映射关系。您可以选择同名映射、同行映射、取消映射或自动排版。
五、配置通道控制
离线同步任务支持设置任务并发数、脏数据策略等。本教程脏数据策略配置为不容忍脏数据,其他配置保持默认。更多信息,请参见通过向导模式配置离线同步任务。
六、调试配置并运行
单击离线同步节点编辑页面右侧的调试配置,设置调试运行使用的资源组和脚本参数,然后单击顶部工具栏的运行,测试同步链路是否成功运行。
您可以在左侧导航栏单击
,然后单击个人目录右侧的
,创建一个后缀为
.sql
的文件,执行如下SQL查询数据去向表中的数据是否符合预期。说明此方式查询需要将目标端ClickHouse绑定为DataWorks的计算资源。
您需要在
.sql
文件编辑页面右侧单击调试配置,指定数据源类型、计算资源、资源组后,再单击顶部工具栏的运行。
SELECT * FROM <ClickHouse侧目标表名> LIMIT 20;
七、调度配置与发布
单击离线同步任务右侧的调度配置,设置周期运行所需的调度配置参数后,单击顶部工具栏的发布,进入发布面板,根据页面提示完成发布。
附录:调整内存参数
如果您在并发调大后同步速率增长不明显,可以尝试手工调整同步任务内存参数。调整方式如下:
在离线同步任务页面顶部工具栏单击脚本模式,将任务从向导模式切换为脚本模式。
在脚本JSON段的
setting
中增加jvmOption
参数,参数形如-Xms${heapMem} -Xmx${heapMem} -Xmn${newMem}
。
向导模式下系统计算的${heapMem}
的取值为768MB+(并发数-1)*256 MB
。建议您在脚本模式中将${heapMem}
设置为更大值,并将${newMem}
设置为${heapMem}
的三分之一。如并发数为8时,向导模式默认计算的${heapMem}
为2560MB,脚本模式中可设置更大值,如设置jvmOption
为-Xms3072m -Xmx3072m -Xmn1024m
。