使用DataWorks同步iGraph数据

数据集成是大数据开发治理平台DataWorks提供的数据同步服务,致力于提供复杂网络环境下、丰富的异构数据源之间高速稳定的数据移动及同步能力。借助DataWorks提供的数据同步能力可将多种数据源的数据批量写入iGraph。

本文为您讲解如何配置数据从MaxCompute一次同步全量数据至iGraph,以及配置周期任务同步增量数据。

前提条件

1.已在阿里云官网购买DataWorks产品。

2.已购买合适规格的独享数据集成资源组,独享数据资源组用于提供数据同步时使用的机器资源和网络环境。详情请参见:新增和使用独享数据集成资源组

3.已完成数据集成资源组与iGraph网络端连通,详情请参见:配置资源组与网络连通。在数据同步任务配置与执行前, 需要确保上下游数据源与购买的独享数据集成资源组网络连通,通常做法是上下游数据源购买在同一个VPC网络内,并通过链接中的方式将购买的集成资源组绑定该VPC。

4.已完成数据源环境准备。在同步任务执行前,授予数据源配置的账号在数据库进行相应操作的权限。详情请参见:数据库环境准备概述

5.对于数据离线同步的脚本模式已有初步了解。详情请参见:通过脚本模式配置离线同步任务

操作流程

1.确认同步方案

整库离线同步可选择的同步方案如下表所示。

同步方案

描述

全量一次性同步

只执行一次同步操作,将来源数据源的存量数据,全量同步至iGraph中。

周期性增量同步

按照指定的周期调度,每次执行任务时仅将增量数据同步至iGraph中。

通常的同步方案是先做一次全量一次性同步,将已有的数据同步至iGraph。之后选择一个固定的时间间隔,周期将新增的数据同步至iGraph中,确保数据最终一致。

2.创建数据离线同步节点

登录DataWorks控制台,在左侧导航栏,单击工作空间列表。选择工作空间所在地域后,单击相应工作空间的数据开发。进入数据开发界面。

创建业务流程,详情请参见:创建业务流程。之后创建离线同步节点,展开业务流程,右键单击数据集成 > 新建节点 > 离线同步

3.进入脚本模式添加数据同步脚本模板

单击工具栏中的转换脚本图标。

image.png

将准备好的脚本模板粘贴进去。此处给出MaxCompute到iGraph的数据同步脚本模板:

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "odps",
            "parameter": {
                "accessId": "${maxcompute_accessid}",
                "accessKey": "${maxcompute_key}",
                "odpsServer": "${maxcompute_server}",
                "tunnelServer": "${maxcompute_tunnel}",
                "isCompress": "false",
                "partition": [
                    "ds=${maxcompute_partition}"
                ],
                "column": [
                    "id",
                    "name"
                ],
                "project": "${maxcompute_project}",
                "table": "${maxcompute_table}"
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "igraph",
            "parameter": {
                "graphName": "${igraph_graph}",
                "endpoint": "${igraph_endpoint}",
                "username": "${igraph_username}",
                "password": "${igraph_password}",
                "pkField": "id",
                "column": [
                    "id",
                    "name"
                ],
                "cmd": "ADD",
                "labelName": "${igraph_label}"
            },
            "name": "Writer",
            "category": "writer"
        },
        {
            "copies": 1,
            "parameter": {
                "nodes": [],
                "edges": [],
                "groups": [],
                "version": "2.0"
            },
            "name": "Processor",
            "category": "processor"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": "1"
        },
        "locale": "zh",
        "speed": {
            "throttle": false,
            "concurrent": 4
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

4.执行一次离线全量同步

点击右侧“数据集成资源组配置”面板,选择购买的集成资源组后保存任务。

image.png

点击上侧面板中的“带参执行”,填入对应的参数后点击运行。此处为了同步全量数据,maxcompute_partition参数填写*,可以匹配到指定MaxCompute下所有分区,MaxCompute的分区配置支持linux Shell通配符,填写规则详情请参见:MaxCompute Reader,下游数据源iGraph参数填写规则详情请参见:iGraph Writer配置

如果上游需要使用其他数据源,可替换模板中Reader部分,脚本模板中可适配的上游数据源详情请参见支持的数据源与读写插件

image.png

运行结束后可以在底部日志面板查看数据同步任务执行是否成功。

5.配置周期增量同步的调度属性

周期性的增量同步需要配置任务自动调度时的相关属性,此步骤介绍如何配置这些属性。您可以进入离线同步节点的编辑页面,单击右侧的调度配置,下文将为您介绍如何在同步任务中配置节点调度属性。调度参数使用说明请参见数据集成使用调度参数的相关说明

  • 配置节点调度属性:用于为任务配置阶段使用的变量赋值调度参数,您在上述配置中定义的变量均可以在此处进行赋值,支持赋值常量与变量。

  • 配置时间属性:用于定义任务在生产环境的周期调度方式。您可以在调度配置的时间属性区域,配置任务生成周期实例的方式、调度类型、调度周期等属性。

  • 配置资源属性:用于定义调度场景下,将当前任务下发至数据集成任务执行资源时所使用的调度资源组,您可以在调度配置的资源属性区域,选择任务调度运行时需要使用的资源组。

以增量数据由MaxCompute同步到iGraph为例,每隔一个周期上游节点应该会产出一个新分区数据存储需要同步的增量数据,一般分区名会与时间属性挂钩,那么同步的模板中${maxcompute_partition}参数可配置为此时间属性,并将此任务依赖上游分区产出节点。

每当一个新分区产出时,都会自动调度此离线同步任务将新分区数据同步进iGraph。

6.提交并发布任务

若任务需要进行周期性调度运行,您需要将任务发布至生产环境。关于任务发布,详情请参见:发布任务