MaxCompute支持通过DataWorks的数据集成功能将其他数据源的数据以离线或实时方式导入MaxCompute。当您需要将其他数据源的数据导入MaxCompute中执行后续数据处理操作时,您可以使用数据集成功能导入数据。本文为您介绍如何将其他数据源的数据导入MaxCompute。

背景信息

数据集成的导入方式分为离线导入和实时导入两种:
  • 离线导入

    您可以通过如下模式将其他数据源的数据导入MaxCompute:

    • 向导模式:创建离线同步节点后,在DataWorks界面以可视化方式配置数据来源、去向及字段的映射关系等信息,完成数据导入操作。
    • 脚本模式:创建离线同步节点后,将DataWorks可视化界面切换至脚本模式,通过脚本配置数据来源、去向及字段的映射关系等信息,完成数据导入操作。
  • 实时导入
    您可以通过如下方式将其他数据源的数据导入MaxCompute:

前提条件

请确认您已完成如下操作:
  • 已准备好待导入MaxCompute的数据源及表。
  • 已准备好目标MaxCompute项目。

    更多创建MaxCompute项目操作,请参见创建MaxCompute项目

使用限制

离线导入场景中,每个离线同步节点仅支持将单张或多张表数据导入至MaxCompute的一张表中。

离线导入

  1. 添加MaxCompute数据源。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击工作空间列表
    3. 选择工作空间所在地域后,单击相应工作空间后的进入数据集成
    4. 在左侧导航栏,单击数据源 > 数据源列表,进入工作空间管理 > 数据源管理页面。
    5. 数据源管理页面,单击右上角的新增数据源
    6. 新增数据源对话框中,选择数据源类型为MaxCompute(ODPS)
    7. 新增MaxCompute(ODPS)数据源对话框中,配置各项参数。
      ODPS数据源
      参数 描述
      数据源名称 数据源名称必须以字母、数字、下划线(_)组合,且不能以数字和下划线(_)开头。
      数据源描述 对数据源进行简单描述,不得超过80个字符。
      适用环境 可以选择开发生产环境。
      说明 仅标准模式工作空间会显示该配置。
      ODPS Endpoint 默认只读,从系统配置中自动读取。
      Tunnel Endpoint MaxCompute Tunnel服务的连接地址,详情请参见Endpoint
      ODPS项目名称 MaxCompute(ODPS)项目名称。
      AccessKey ID 访问密钥中的AccessKey ID,您可以进入用户信息管理页面进行复制。
      AccessKey Secret 访问密钥中的AccessKey Secret,相当于登录密码。
    8. 选择资源组连通性类型为数据集成
    9. 在资源组列表,单击相应资源组后的测试连通性
      数据同步时,一个任务只能使用一种资源组。您需要测试每种资源组的连通性,以保证同步任务使用的数据集成资源组能够与数据源连通,否则将无法正常执行数据同步任务。如果您需要同时测试多种资源组,请选中相应资源组后,单击批量测试连通性。详情请参见选择网络连通方案
      说明
      • (推荐)资源组列表默认仅显示独享数据集成资源组,为确保数据同步的稳定性和性能要求,推荐使用独享数据集成资源组。
      • 如果您需要测试公共资源组或自定义资源组的连通性,请在资源组列表右下方,单击更多选项,在警告对话框单击确定,资源组列表会显示可供选择的公共资源组和自定义资源组。
    10. 测试连通性通过后,单击完成
  2. 添加待导出数据源。
    请根据MaxCompute导出的目标数据源类型,完成添加数据源操作。更多添加数据源操作,请参见配置数据源
  3. 创建业务流程。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击工作空间列表
    3. 选择工作空间所在地域后,单击相应工作空间后的进入数据开发
    4. 数据开发页面,鼠标悬停至新建图标,单击业务流程
    5. 新建业务流程对话框中,输入业务名称描述
      注意 业务名称必须是大小写字母、中文、数字、下划线(_)以及小数点(.),且不能超过128个字符。
    6. 单击新建
  4. 创建离线同步节点。
    1. 展开业务流程,右键单击数据集成
    2. 单击新建 > 离线同步
    3. 新建节点对话框中,输入节点名称,并选择目标文件夹
      注意 节点名称必须是大小写字母、中文、数字、下划线(_)以及小数点(.),且不能超过128个字符。
    4. 单击提交
  5. 配置并运行数据同步任务。
    • 如果您采用向导模式配置并运行数据同步任务,转6
    • 如果您采用脚本模式配置并运行数据同步任务,转7
  6. 通过向导模式配置并运行数据同步任务。
    1. 选择数据来源
      在数据来源下的数据源下拉列表选择数据源类型为待导入的数据源类型及数据源名称,在下拉列表选择待导入数据的表。数据来源
    2. 选择数据去向
      在数据去向下的数据源下拉列表选择数据源类型为ODPS及目标MaxCompute数据源名称,在下拉列表选择目标表。数据去向
    3. 配置字段的映射关系
      指定数据来源表和数据去向表间字段的映射关系。映射
    4. 配置通道控制
      通道控制
    5. 配置调度属性
      在同步任务中配置调度参数进行数据过滤。
    6. 在顶部菜单栏,单击保存图标后,单击运行图标,运行离线同步任务。
  7. 通过脚本模式配置并运行数据同步任务。
    1. 导入模板
      来源类型下拉列表选择待导入数据源类型,对应数据源为待导入数据源名称。在目标类型下拉列表选择ODPS,对应数据源为创建好的MaxCompute数据源名称。导入模板
    2. 配置同步任务的读取端
      在脚本中配置离线同步任务读取的数据源,以及需要同步的表信息等。
      {
                  "stepType": "mysql",
                  "parameter": {
                      "partition": [],
                      "datasource": "",
                      "envType": 0,
                      "column": [
                          "*"
                      ],
                      "table": ""
                  },
                  "name": "Reader",
                  "category": "reader"
              },
      • stepType:待导入数据源的类型。
      • partition:待导入表的分区信息。
      • datasource:待导入数据源的名称。
      • column:待导入表的列名称。需要与写入端MaxCompute中配置的列名称建立一一对应关系。
      • table:待导入表的名称。
      • namecategory:取值为Reader,标识数据源为读取端。
    3. 配置同步任务的写入端
      在脚本中配置离线同步任务写入的数据源,以及需要写入的表信息等。
      {
                  "stepType":"odps",
                  "parameter":{
                      "partition":"",
                      "truncate":true,
                      "datasource":"odps_first",
                      "column":[
                          "*"
                      ],
                      "table":""
                  },
                  "name":"Writer",
                  "category":"writer"
              }
      • stepType:目标数据源类型。设置为odps
      • partition:目标表的分区信息。您可以通过show partitions <table_name>;命令,查看表的分区信息。更多查看分区信息,请参见查看分区
      • datasource:MaxCompute数据源的名称。
      • column:目标表的列名称。
      • table:目标表的名称。您可以通过show tables;命令,查看表的名称。更多查看表信息,请参见查看表或视图信息
      • namecategory:取值为Writer,标识数据源为写入端。
    4. 配置通道控制
      "setting": {
              "errorLimit": {
                  "record": "1024"   
              },
              "speed": {
                  "throttle": false,   
                  "concurrent": 1   
              }
          },
      • record:脏数据的最大容忍条数。
      • throttle:设置是否进行限速。
      • concurrent:设置离线同步任务内,可以从源并行读取或并行写入数据存储端的最大线程数。
    5. 配置调度属性
    6. 在顶部菜单栏,单击保存图标后,单击运行图标,运行同步任务。
  8. 请前往MaxCompute数据源中确认MaxCompute表中是否已成功导入数据。
    • 如果数据完整无遗漏,则同步完成。
    • 如果数据未同步成功或数据存在遗漏,请参见离线同步常见问题

同步单表数据(实时导入)

  1. 进入数据开发页面。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击工作空间列表
    3. 选择工作空间所在地域后,单击相应工作空间后的进入数据开发
  2. 鼠标悬停至新建图标,单击数据集成 > 实时同步
    您也可以展开目标业务流程,右键单击数据集成,选择新建 > 实时同步
  3. 新建节点对话框中,选择同步方式为单表(Topic)到单表(Topic)ETL,输入节点名称,并选择目标文件夹
    注意 节点名称必须是大小写字母、中文、数字、下划线(_)以及英文句号(.),且不能超过128个字符。
  4. 单击提交
  5. 在实时同步节点的编辑页面,单击输出 > MaxCompute并拖拽至编辑面板,连线已配置好的输入或转换节点。
  6. 单击MaxCompute节点,在节点配置对话框中,配置各项参数。
    MaxCompute
    参数 描述
    数据源 选择已经配置好的MaxCompute数据源,此处仅支持MaxCompute数据源。

    如果您未配置数据源,请单击右侧的新建数据源,进入工作空间管理 > 数据源管理页面新建,详情请参见配置MaxCompute数据源

    选择当前数据源下需要同步的表名称。
    您可以单击右侧的一键建表创建新表,也可以单击数据预览进行确认。
    注意 新建目标数据表前,请先连线输入节点,并确认有输出字段。
    分区方式 包括时间自动分区根据字段内容动态分区。其中时间自动分区是根据_execute_time_字段进行分区的,详情请参见实时同步字段格式根据字段内容动态分区通过指定源端表某字段与目标MaxCompute表分区字段对应关系,实现源端对应字段所在数据行写入到MaxCompute表对应的分区中。
    分区讯息 为您展示MaxCompute分区表的信息。
    字段映射 单击字段映射,设置源端和目标端字段的映射。同步任务会根据字段的映射关系同步数据。
    如果您需要新建表,请单击一键建表后,在新建数据表对话框中,配置各项参数。一键建表
    参数 描述
    表名称 实时同步写入的MaxCompute表的名称。
    生命周期 实时同步写入的MaxCompute表的生命时间长度,详情请参见生命周期
    数据字段结构 实时同步写入的MaxCompute表的字段结构。如果您需要新增字段,请单击添加
    分区设置 实时同步写入的MaxCompute表的分区信息。 实时同步写入MCompute表支持时间自动分区根据字段内容动态分区两种分区方式
    • 时间自动分区:根据_execute_time_字段将数据写入到对应时间分区中,详情请参见实时同步字段格式,时间自动分区
      注意
      • 您最少需要设置二级分区(月和年),最多支持设置五级分区(分钟、小时、天、月和年)。
      • 关于MaxCompute表的介绍可参考文档:分区
    • 根据字段内容动态分区:通过指定源端表某字段与目标MaxCompute表分区字段对应关系,实现源端对应字段所在数据行写入到MaxCompute表对应的分区中。根据字段内容动态分区例如:配置MaxCompute表分区字段值来源为源端字段A,当A字段值为aa时,实时同步会将数据写入到MaxCompute表对应的aa分区中,当A字段值为bb时,实时同步会将数据写入到MaxCompute表对应的bb分区中。
  7. 单击工具栏中的保存图标。

同步整库数据(实时导入)

  1. 创建实时同步任务
  2. 提交并发布实时同步任务
  3. 执行实时同步任务

一键实时同步数据(实时导入)

  1. 创建同步解决方案任务
  2. 一键实时同步至MaxCompute