全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
DataWorks(数据工场)

数据同步任务

更新时间:2017-11-08 13:40:16

目前数据同步任务支持的数据源类型包括:MaxCompute、RDS(MySQL、SQL Server、PostgreSQL)、Oracle、FTP、AnalyticDB、OSS、DRDS,更多支持的数据源请参见 支持数据源类型

本文以 RDS 数据同步至 MaxCompute 为例,详细说明如何进行数据同步任务。

操作步骤

创建数据表

创建 MaxCompute 表的详细操作请参见 创建表

新建数据源

注意:

新建数据源需项目管理员角色才能够创建。

当 RDS 数据源测试连通性不通时,需要到自己的 RDS 上添加数据同步机器 IP 白名单:

11.192.97.82,11.192.98.76,10.152.69.0/24,10.153.136.0/24,10.143.32.0/24,120.27.160.26,10.46.67.156,120.27.160.81,10.46.64.81,121.43.110.160,10.117.39.238,121.43.112.137,10.117.28.203,118.178.84.74,10.27.63.41,118.178.56.228,10.27.63.60,118.178.59.233,10.27.63.38,118.178.142.154,10.27.63.15,100.64.0.0/8

注意:

若使用自定义资源组调度 RDS 的数据同步任务,必须把自定义资源组的机器 IP 也加到 RDS 的白名单中。

  1. 以开发者身份进入 阿里云数加平台 > DataWorks(数据工场) > 管理控制台 页面,单击项目操作栏中的 进入工作区

  2. 单击顶部菜单栏中的 数据集成,导航至 数据源 页面。

  3. 单击右上角的 新增数据源

  4. 在新增数据源弹出框中填写相关配置项。

    上图中的配置项具体说明如下:

    • 数据源类型:阿里云数据库(RDS)。

    • 数据源名称:由英文字母、数字、下划线组成且需以字符或下划线开头,长度不超过 30 个字符。

    • 数据源描述:对数据源的简单描述,不超过 1024 个字符。

    • RDS 实例 ID:该 MySQL 数据源的 RDS 实例 ID。

    • RDS 实例购买者 ID:该 MySQL 数据源的 RDS 实例购买者 ID。

      若选择 JDBC 形式来配置数据源,其 JDBC 连接信息,格式为:jdbc:mysql://IP:Port/database。

    • 数据库名:该数据源对应的数据库名。

    • 用户名/密码:数据库对应的用户名和密码。

  5. 单击 测试连通性

  6. 若测试连通性成功,单击 保存 即可。

    若测试连通性失败,请根据自身情况参见:ECS 上自建的数据库测试连通性失败RDS 数据源测试连通性不通

    关于其他类型(MaxCompute、RDS、Oracle、FTP、AnalyticDB、OSS、DRDS)数据源的配置,详见 数据源配置

新建任务

  1. 单击 数据开发 页面工具栏中的 新建任务

  2. 填写新建任务弹出框中的各配置项。

    此处以节点任务为例,若节点需要每日自动调度运行,调度类型选择 周期调度,然后在节点属性中配置调度周期。

  3. 单击 创建

配置数据同步任务

同步任务节点包括 选择来源选择目标字段映射通道控制 四大配置项。

  1. 选择来源

    选择 数据源数据表

    • 数据过滤:可参考相应的 SQL 语法填写 where 过滤语句(不需要填写 where 关键字),该过滤条件将作为增量同步的条件。

      注意:

      where 条件即针对源头数据筛选条件,根据指定的 column、table、where 条件拼接 SQL 进行数据抽取。利用 where 条件可进行全量同步和增量同步,具体说明如下:

      • 全量同步:

        第一次做数据导入时通常为全量导入,可不用设置 where 条件。

      • 增量同步:

        增量导入在实际业务场景中,往往会选择当天的数据进行同步,通常需要编写 where 条件语句,请先确认表中描述增量字段(时间戳)为哪一个。如 tableA 描述增量的字段为 create_time,那么在 where 条件中编写 create_time>${yesterday},在参数配置中为其参数赋值即可。其中更多内置参数的使用方法,请参见 系统调度参数

    若数据同步任务是 RDS/Oracle/MaxCompute,在该页面中会有切分键配置。

    • 切分键:只支持类型为整型的字段。读取数据时,根据配置的字段进行数据分片,实现并发读取,可提升数据同步效率。只有同步任务是 RDS/Oracle 数据导入至 MaxCompute 时,才显示切分键配置项。

      注意:

      若源头为 Mysql 数据源,则数据同步任务还支持分库分表模式的数据导入(前提是无论数据存储在同一数据库还是不同数据库,表结构必须是一致的)。

    分库分表可支持如下场景:

    • 同库多表:单击搜索表,添加需要同步的多张表即可。

    • 分库多表:首先单击添加选择源库,再单击搜索表来添加表。

  2. 选择目标

    单击 快速建表 可将源头表的建表语句转化为符合 MaxCompute SQL 语法规范的 DDL 语句新建目标表。选择后单击 下一步

    • 分区信息:分区是为了便于查询部分数据引入的特殊列,指定分区便于快速定位到需要的数据。此处的自定义参数是将昨天的日期做为这个分区的值,分区值支持常量和变量,更多自定义参数请参见 参数配置

    • 清理规则:

      • 写入前清理已有数据:导数据之前,清空表或者分区的所有数据,相当于 insert overwrite。

      • 写入前保留已有数据:导数据之前不清理任何数据,每次运行数据都是追加进去的,相当于 insert into。

    在参数配置中为参数赋值,如下图所示:

    1

  3. 映射字段

    需对字段映射关系进行配置,左侧 源头表字段 和右侧 目标表字段 为一一对应的关系。

    增加/删除:鼠标 Hover 上每一行,单击删除图标可以删除当前字段。单击 添加一行 可单个增加字段,当数据库类型是 MaxCompute 时,可以将分区列的列名,作为添加一行的值,这样可以在同步的时候,将分区列也同步过去。

    自定义变量和常量的写入方法:

    如果需要把常量或者变量导入 MaxCompute 中表的某个字段,只需要单击插入按钮,然后输入常量或者变量的值,并且用英文单引号包起来即可。如变量 ${yesterday},在参数配置组件配置给变量赋值如 yesterday=$[yyyymmdd]。具体时间参数请参见 系统调度参数

  4. 通道控制

    通道控制 用来配置作业速率上限和脏数据检查规则,如下图所示:

    • 作业速率上限:即配置当前数据同步任务速率,支持最大为 20MB/s(通道流量度量值是数据同步任务本身的度量值,不代表实际网卡流量)。

    • 作业并发数:作业并发数必须配置了切分建以后才有效。作业并发数的上限是作业速率的上限,比如说作业速率上限是 10M,作业并发数最大可以选择 10。

    • 当错误纪录数:写入 RDS、Oracle 时可用,即脏数据数量,超过所配置的个数时,该数据同步任务结束。

    注意:

    我们不建议作业并发数配置过大,作业并发数越大,所消耗的资源也越多,很有可能会导致您别的任务会产生等待资源的情况,影响其他任务运行。

  5. 预览保存

    完成以上配置后,单击 下一步 即可预览,如若无误,单击 保存。如下图所示:

提交数据同步任务,并测试工作流

  1. 单击顶部菜单栏中的 提交

  2. 提交成功后单击 测试运行

    注意:

    因为本示例中源表里 cratetime 有时间为 2017-01-04 ,而配置中用到调度时间参数 $[yyyy-mm-dd-1] 和 ${bdp.system.bizdate},为了能在测试的时候将 cratetime 赋值为 2017-01-04,目标表的分区值为 20170104,测试的时候业务时间要选择 2017-01-04。如下图所示:

  3. 测试任务触发成功后,单击 前往运维中心 即可查看任务进度。

  4. 查看同步数据。

本文导读目录