本文以MaxCompute为例介绍如何将数据通过DataWorks同步至云数据库ClickHouse

背景信息

您可以通过DataWorks,将支持的各种数据源数据离线同步至云数据库ClickHouse。离线同步支持的数据源类型,具体请参见支持的数据源与读写插件

注意事项

前提条件

操作步骤

  1. 配置数据源。
    您需要为MaxCompute和云数据库ClickHouse分别配置数据源。
    说明 如何配置数据源,请参见配置MaxCompute数据源配置ClickHouse数据源
  2. 创建MaxCompute表。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击工作空间列表
    3. 选择工作空间所在地域后,单击相应工作空间后的进入数据开发
    4. 数据开发页面,鼠标悬停至新建图标,单击MaxCompute >
    5. 新建表对话框中,输入表名,本文以odptabletest1表名为例。
    6. 单击新建
    7. 基本属性区域,配置各项参数。
      基本属性

      参数含义如下。

      名称 描述
      中文名 MaxCompute表的中文名称。
      一级主题 新建表所处的一级目标文件夹名称。
      说明 一级、二级主题仅仅是DataWorks上文件夹的摆放形式,目的是为了您能更好地管理您的表。
      二级主题 新建表所处的二级目标文件夹名称。
      新建主题 单击新建主题,进入主题管理页面,您可以在该页面创建一级主题、二级主题。

      新建主题后,单击刷新图标,即可同步新建的主题。

      描述 对新建表进行简单描述。
    8. 单击工具栏中的DDL模式
    9. DDL模式对话框中,输入如下建表语句,单击生成表结构
      CREATE TABLE IF NOT EXISTS odptabletest1
      (    
      v1  TINYINT,    
      v2  SMALLINT                
      );
    10. 确认操作对话框中,单击确认
    11. 单击工具栏的提交到生产环境
    12. 在弹出的提交生产确认对话框中,勾选我已悉知风险,确认提交
    13. 单击确认
  3. 写入MaxCompute表数据。
    1. 数据开发页面,单击左侧导航栏的临时查询
    2. 鼠标悬停至新建图标,单击新建 > ODPS SQL
    3. 新建节点对话框中,输入节点名称,并选择目标文件夹
    4. 单击提交
    5. 在节点的编辑页面,输入如下语句,为MaxCompute表写入数据。
      insert into odptabletest1 values (1,"a"),(2,"b"),(3,"c"),(4,"d");
    6. 单击工具栏中的执行图标。
    7. MaxCompute计算成本估计窗口,单击运行
  4. 创建云数据库ClickHouse表。
    1. 登录云数据库ClickHouse控制台
    2. 集群列表页面,单击目标集群ID。
    3. 单击右上方导航栏的登录数据库
    4. 输入建表语句并单击执行(F8)。建表语句如下。
      create table default.dataworktest ON CLUSTER default (
      v1 Int, 
      v2 String
      ) ENGINE = MergeTree ORDER BY v1;
      说明 云数据库ClickHouse表的结构类型需与MaxCompute对应。
  5. 创建业务流程。
    如果您已有业务流程,可以忽略该步骤。
    1. 数据开发页面,单击左侧导航栏的数据开发
    2. 鼠标悬停至新建图标,选择业务流程
    3. 新建业务流程对话框,输入业务名称
      注意 业务名称必须由大小写字母、中文、数字、下划线(_)以及小数点(.)组成,且不能超过128个字符。
    4. 单击新建
  6. 创建离线同步节点。
    1. 展开业务流程,右键单击数据集成
    2. 单击新建 > 离线同步
    3. 新建节点对话框中,输入节点名称,并选择目标文件夹
      注意 节点名称必须由大小写字母、中文、数字、下划线(_)以及小数点(.)组成,且不能超过128个字符。
    4. 单击提交
  7. 配置数据来源和数据去向。
    1. 配置数据来源:数据来源为DataWorks支持的任一数据源,本文以MaxCompute为例。
      选择数据源
      参数含义如下。
      参数 描述
      数据源 数据源的类型和名称。
      生产项目名 默认不可以修改。
      需要同步的表。
      分区信息 如果您每日增量数据限定在对应日期的分区中,可以使用分区进行每日增量。例如,配置分区v17的值为${bizdate}
      说明 DataWorks不支持对MaxCompute分区表进行字段映射,您需要单独配置分区字段。
      说明 参数配置的更多信息,请参见MaxCompute Reader
    2. 配置数据去向:数据源的类型选择为ClickHouse
      选择数据源
      参数含义如下。
      参数 描述
      数据源 数据源的类型与名称,其中,数据源的类型需选择ClickHouse。
      需要同步的表。
      主键或者唯一键冲突处理 固定选择为insert into(插入)
      导入前准备语句 执行数据同步任务之前率先执行的SQL语句。
      导入后完成语句 执行数据同步任务之后执行的SQL语句。
      批量插入字节大小 批量插入数据的最大字节数。
      批量条数 批量插入数据的条数。
    3. 字段映射:您可以选择字段的映射关系,左侧的源头表字段和右侧的目标表字段为一一对应关系。
      字段映射
      参数含义如下。
      参数 描述
      同名映射 根据名称建立相应的映射关系,请注意匹配数据类型。
      同行映射 在同行建立相应的映射关系,请注意匹配数据类型。
      取消映射 取消建立的映射关系。
      自动排版 根据相应的规律自动排版。
      手动编辑源表字段 单击手动编辑,手动编辑源表字段,一行表示一个字段,首尾空行会被采用,其他空行会被忽略。
      添加一行 单击添加一行,您可以输入以下类型的字段:
      • 输入常量,输入的值需要使用英文单引号,例如'abc''123'等。
      • 配合调度参数使用,例如'${bizdate}'等。
      • 输入您要同步的分区列,如分区列有pt等。
      • 不支持配置ODPS函数,可以输入关系数据库支持的函数,例如now()count(1)
      • 如果您输入的值无法解析,则类型显示为'自定义'

        如果您手工编辑添加的列显示'自定义'(例如添加了MaxCompute分区列、LogHub数据预览未预览到的列),不会影响实际任务执行。

    4. 通道控制:配置作业速率上限和脏数据检查规则。
      通道控制
      参数含义如下。
      参数 描述
      任务期望最大并发数 数据同步任务内,可以从源并行读取或并行写入数据存储端的最大线程数。向导模式通过界面化配置并发数,指定任务所使用的并行度。
      同步速率 设置同步速率可以保护读取端数据库,以避免抽取速度过大,给源库造成太大的压力。同步速率建议限流,结合源库的配置,请合理配置抽取速率。
      错误记录数 错误记录数,表示脏数据的最大容忍条数。
      分布式处理能力

      数据同步时,可以将任务切片分散到多台执行节点上并发执行,提高同步速率。该模式下,配置较大任务并发数会增加数据存储访问压力,如需使用该功能,请提前评估数据存储的访问负载。该功能仅支持在独享数据集成资源组配置,详情请参见独享数据集成资源组新增和使用独享数据集成资源组

  8. 配置数据集成资源组。
    单击右侧的数据集成资源组配置,选择已经创建好的独享数据集成资源组集成资源组配置
  9. 保存并运行数据同步任务。
    1. 单击工具栏中的保存图标,保存数据同步任务。
    2. 单击工具栏中的运行图标,运行数据同步任务。运行日志
  10. 查询云数据库ClickHouse表。
    1. 登录云数据库ClickHouse控制台
    2. 集群列表页面,单击目标集群ID。
    3. 单击右上方导航栏的登录数据库
    4. 输入查询语句并单击执行(F8)。本文使用下面的示例语句。
      select * from dataworktest;
      查询结果如下。查询结果