同步数据

本教程以MySQL中的用户基本信息ods_user_info_d表和OSS中的网站访问日志数据user_log.txt文件为例,通过数据集成离线同步任务分别同步至MaxCompute的ods_user_info_d_odpsods_raw_log_d_odps表。旨在介绍如何通过DataWorks数据集成实现异构数据源间的数据同步,完成数仓数据同步操作。

快速导入

DataWorks也为您提供了本教程相关代码,您可一键导入网站用户画像分析模板,直接体验配置数据质量监控。导入用户画像分析模板可参见:画像分析模板导入

前提条件

  • 请确保已阅读实验介绍,对本教程具有初步认知,实验介绍请参见:实验介绍

  • 请确保已准备好所需的工作环境。具体操作步骤请参见:准备环境

章节目标

将案例提供的公共数据源中的数据同步至MaxCompute,完成业务流程设计中的数据同步部分的内容。

源端数据源类型

源端待同步数据

源端表结构

目标端数据源类型

接收源端数据的目标表

目标表结构

MySQL

表:ods_user_info_d

用户基本信息数据

  • uid 用户名

  • gender 性别

  • age_range 年龄分段

  • zodiac 星座

MaxCompute

ods_user_info_d_odps

  • uid 用户名

  • gender 性别

  • age_range 年龄分段

  • zodiac 星座

  • dt 分区字段

HttpFile

文件:user_log.txt

用户网站访问日志数据

一行为一条用户访问记录

$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent"$http_referer" "$http_user_agent" [unknown_content];

MaxCompute

ods_raw_log_d_odps

  • col 原始日志

  • dt 分区字段

重要
  • 平台已提供本教程所需的测试数据及数据源,您需将该数据源添加至您的工作空间,即可在工作空间访问平台提供的测试数据。

  • 本教程提供数据仅作为阿里云大数据开发治理平台DataWorks数据应用实操使用,所有数据均为人工Mock数据,并且只支持在数据集成模块读取数据。

进入数据开发

登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的数据开发与治理 > 数据开发,在下拉框中选择对应工作空间后单击进入数据开发

步骤一:设计业务流程

设计业务流程

  1. 新建业务流程。

    数据开发需基于业务流程使用对应的开发组件进行具体开发操作。在创建节点之前,您需要先新建业务流程。具体操作方法可参见创建业务流程

    该业务流程的命名为:用户画像分析_MaxCompute

    image

  2. 设计业务流程。

    业务流程新建完成后,将自动展开该业务流程画布。请根据工作流程设计,在业务流程画布中单击新建节点,通过将节点组件拖拽至业务流程画布,并通过拉线设置节点上下游依赖的方式,设计数据同步阶段的业务流程。

    image

  3. 在本教程中,由于虚拟节点和同步节点之间并无血缘关系,因此我们通过业务流程拉线的方式来设置节点的依赖关系。有关更多依赖关系设置方式的详细信息,详情请参见调度依赖配置指引。以下为各个节点的类型、命名以及作用的介绍。

    节点分类

    节点类型

    节点命名

    (以最终产出表命名)

    节点作用

    通用

    虚拟节点

    workshop_start_odps

    用于统筹管理整个用户画像分析业务流程,例如业务流程起调时间。当业务流程较复杂时,可使数据流转路径更清晰。该节点为空跑任务,无须编辑代码。

    数据集成

    离线同步

    ods_user_info_d_odps

    用于将存储于MySQL的用户基本信息数据同步至MaxCompute表ods_user_info_d_odps

    数据集成

    离线同步

    ods_raw_log_d_odps

    用于将存储于OSS的用户网站访问记录同步至MaxCompute表ods_raw_log_d_odps

配置调度逻辑

本案例通过虚拟节点workshop_start_odps控制整个业务流程每天00:30调度执行,以下为虚拟节点关键调度配置,其他节点调度无须变更,实现逻辑详情请参见:场景:如何配置业务流程定时时间。其他调度配置相关说明,请参见:任务调度属性配置概述

调度配置

图片展示

说明

调度时间配置

image

虚拟节点配置调度时间为00:30,该虚拟节点会在每日00:30调起当前业务流程并执行。

调度依赖配置

image

由于虚拟节点workshop_start_odps无上游依赖,此时可以直接依赖工作空间根节点,由空间根节点触发workshop_start_odps节点执行。

说明

DataWorks中的所有节点都需要依赖于上游节点,数据同步阶段的所有任务都以虚拟节点workshop_start_odps为依赖。换句话说,通过workshop_start_odps节点来触发数据同步业务流程的执行。

步骤二:搭建同步链路

创建目标MaxCompute表

提前新建用于接收通过数据集成同步过来的原始数据的MaxCompute表。本教程仅快速创建相关表,更多MaxCompute表相关操作,请参见创建并使用MaxCompute表

  1. 新建表入口。

    image.png

  2. 新建ods_raw_log_d表。

    在新建表弹窗中输入名称ods_raw_log_d_odps,在表的编辑页面单击DDL,输入下述建表语句后,单击生成表结构,并确认覆盖当前操作。

    CREATE TABLE IF NOT EXISTS ods_raw_log_d_odps
    (
     col STRING
    ) 
    PARTITIONED BY
    (
     dt STRING
    )
    LIFECYCLE 7;
  3. 新建ods_user_info_d_odps表。

    在新建表弹窗中输入名称ods_user_info_d_odps,在表的编辑页面单击DDL,输入下述建表语句后,单击生成表结构,并确认覆盖当前操作。

    CREATE TABLE IF NOT EXISTS ods_user_info_d_odps (
     uid STRING COMMENT '用户ID',
     gender STRING COMMENT '性别',
     age_range STRING COMMENT '年龄段',
     zodiac STRING COMMENT '星座'
    )
    PARTITIONED BY (
     dt STRING
    )
    LIFECYCLE 7;
  4. 提交并发布表。

    表信息确认无误后,将ods_user_info_d表和ods_raw_log_d表分别单击提交到开发环境提交到生产环境此操作将根据您的节点配置在开发环境与生产环境对应计算引擎项目中分别创建目标引擎物理表。

    说明

    表结构定义完成后,您需将其提交至开发环境与生产环境,提交成功后才可在对应环境的引擎项目中查看该表。

    • 提交表至DataWorks的开发环境,即在开发环境所绑定的MaxCompute引擎中创建当前表。

    • 提交表至DataWorks的生产环境,即在生产环境所绑定的MaxCompute引擎中创建当前表。

创建数据来源数据源

本教程测试数据来源于MySQL数据库OSS对象存储,需要您在当前空间创建名为user_behavior_analysis_mysql的MySQL数据源、名为user_behavior_analysis_httpfile的HttpFile数据源用于访问平台提供的测试数据,测试使用的数据源基本信息已提供。

说明
  • 在数据集成同步任务配置前,您可以在DataWorks的数据源页面,配置好您需要同步的源端和目标端数据库或数据仓库的相关信息,以便在同步任务配置过程中,可通过选择数据源名称来控制同步读取和写入的数据库或数据仓库。

  • 本教程提供数据仅作为阿里云大数据开发治理平台DataWorks数据应用实操使用,所有数据均为人工Mock数据,并且只支持在数据集成模块读取数据。

  • 本步骤创建的HttpFile数据源和MySQL数据源对应的测试数据位于公网,请确保您的DataWorks资源组已根据步骤二配置了公网NAT网关,否则测试连通性时将提示如下报错:

    • HttpFile:ErrorMessage:[Connect to dataworks-workshop-2024.oss-cn-shanghai.aliyuncs.com:443 [dataworks-workshop-2024.oss-cn-shanghai.aliyuncs.com/106.14.XX.XX] failed: connect timed out]

    • MySQL:ErrorMessage:[Exception:Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.<br><br>ExtraInfo:Resource Group IP:****,detail version info:mysql_all],Root Cause:[connect timed out]

创建MySQL数据源(user_behavior_analysis_mysql)

在您的工作空间中新建MySQL数据源,用于后续读取平台提供的存放于MySQL中的用户信息数据,并测试该数据源与同步数据的资源组网络是否连通。

  1. 进入数据源页面。

    1. 登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的更多 > 管理中心,在下拉框中选择对应工作空间后单击进入管理中心

    2. 进入工作空间管理中心页面后,单击左侧导航栏的数据源 > 数据源列表,进入数据源页面。

  2. 新建MySQL数据源。

    1. 管理中心页面,单击进入数据源 > 数据源列表页面后单击新增数据源

    2. 新增数据源对话框中,搜索选择数据源类型为MySQL

    3. 创建MySQL数据源对话框,配置各项参数。

      image

      参数

      描述

      数据源名称

      请输入user_behavior_analysis_mysql

      数据源描述

      输入DataWorks案例体验专用数据源,在离线同步配置时读取该数据源即可访问平台提供的测试数据,该数据源只支持数据集成场景读取,其他模块不支持使用。

      配置模式

      选择连接串模式

      适用环境

      勾选开发、生产

      说明

      您需要同步创建开发环境生产环境的数据源,否则任务生产执行会报错。

      连接地址

      主机地址IP

      rm-bp1z69dodhh85z9qa.mysql.rds.aliyuncs.com

      端口号

      3306

      数据库名称

      workshop

      用户名

      workshop

      密码

      workshop#2017

      认证选项

      无认证。

      连接配置

      连接配置区域的Serverless资源组后,单击连通状态列的测试连通性,分别测试资源组与开发、生产环境数据源的网络是否连通,等待界面提示测试完成,连通状态为可连通

      重要

      本步骤创建的MySQL数据源对应的测试数据位于公网,请确保您的DataWorks资源组已根据步骤二配置了公网NAT网关,否则测试连通性时将提示报错:ErrorMessage:[Exception:Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.<br><br>ExtraInfo:Resource Group IP:****,detail version info:mysql_all],Root Cause:[connect timed out]

创建HttpFile数据源(user_behavior_analysis_httpfile)

在您的工作空间中新建HttpFile数据源,用于后续读取平台提供的存放于OSS中的用户网站访问测试数据,并测试该数据源与同步数据的资源组网络是否连通。

  1. 进入数据源页面。

    1. 登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的更多 > 管理中心,在下拉框中选择对应工作空间后单击进入管理中心

    2. 进入工作空间管理中心页面后,单击左侧导航栏的数据源 > 数据源列表,进入数据源页面。

  2. 新建HttpFile数据源。

    1. 管理中心页面,单击进入数据源 > 数据源列表页面后单击新增数据源

    2. 新增数据源对话框中,搜索选择数据源类型为HttpFile

    3. 创建HttpFile数据源对话框,配置各项参数,主要参数配置描述如下:

      主要参数

      描述

      数据源名称

      输入数据源名称,该名称为数据源在您工作空间中的标识,本案例中设置数据源名称为user_behavior_analysis_httpfile

      数据源描述

      输入DataWorks案例体验专用数据源,在离线同步配置时读取该数据源即可访问平台提供的测试数据,该数据源只支持数据集成场景去读取,其他模块不支持使用。

      适用环境

      勾选开发环境、生产环境

      说明

      您需要同步创建开发环境生产环境的数据源,否则任务生产执行会报错。

      URL域名

      输入https://dataworks-workshop-2024.oss-cn-shanghai.aliyuncs.com

      连接配置

      连接配置区域的Serverless资源组后,单击连通状态列的测试连通性,分别测试资源组与开发、生产环境数据源的网络是否连通,等待界面提示测试完成,连通状态为可连通

      重要

      本步骤创建的HttpFile数据源对应的测试数据位于公网,请确保您的DataWorks资源组已根据步骤二配置了公网NAT网关,否则测试连通性时将提示报错:ErrorMessage:[Connect to dataworks-workshop-2024.oss-cn-shanghai.aliyuncs.com:443 [dataworks-workshop-2024.oss-cn-shanghai.aliyuncs.com/106.14.XX.XX] failed: connect timed out]

配置用户数据同步链路

本离线同步节点将用户基本信息数据从案例提供的MySQL表ods_user_info_d同步至MaxCompute表ods_user_info_d_odps的同步链路配置操作。

  1. 双击离线同步节点ods_user_info_d_odps,进入节点编辑页面。

  2. 网络与资源配置。

    在配置好数据来源我的资源组数据去向后,请单击下一步,根据页面提示完成连通性测试。详细配置如下。

    image

    配置项

    配置内容

    数据来源

    • 数据来源HttpFile

    • 数据源名称user_behavior_analysis_mysql

    我的资源组

    选择在准备环境阶段购买的Serverless资源组。

    数据去向

    • 数据去向MaxCompute

    • 数据源名称user_behavior_analysis_odps

  3. 任务配置。

    • 配置数据来源于去向。

      模块

      配置项

      配置内容

      图示

      数据来源

      选择MySQL表ods_user_info_d

      image

      切分键

      建议使用主键或有索引的列作为切分键,仅支持类型为整型的字段。

      此处配置切分键为uid字段。

      数据去向

      Tunnel资源组

      本教程默认为公共传输资源,若您拥有独享tunnel quota,可下拉选择。

      说明

      MaxCompute的数据传输资源选择,具体请参考购买与使用独享数据传输服务资源组。如果独享tunnel quota因欠费或到期不可用,任务在运行中将会自动切换为公共传输资源

      image

      schema

      本教程选择default,若您DataWorks项目下拥有其他schema,可下拉选择。

      下拉选择在临时查询中创建的ods_user_info_d_odps表。

      分区信息

      本教程填入${bizdate}参数。

      写入模式

      • 本教程下拉选择:。

      • 写入模式支持以下两种写入模式:

        • insert into:直接向表或静态分区中插入数据。

        • insert overwrite:先清空表中的原有数据,再向表或静态分区中插入数据。

      空字符串转为Null写入

      本教程选择:

    • 确认字段映射及通用配置。

      DataWorks通过配置源端与目标端字段映射关系,实现源端指定字段数据写入目标端指定字段,同时提供并发设置并发读写数据、提供限速功能避免同步对数据库造成影响、提供脏数据影响定义及分布式执行任务等功能。本教程使用默认配置。关于其他配置项说明,详情请参见通过向导模式配置离线同步任务

  4. 配置调度属性。

    配置页面单击右侧调度配置,可进入调度配置面板配置调度与节点信息,详情可参见任务调度配置。以下为配置的内容:

    配置项

    配置内容

    图示

    调度参数

    调度参数值保持默认$bizdate即可。

    说明

    bizdate=$bizdate,获取前一天的日期,格式为yyyymmdd

    image

    时间属性

    • 调度周期

    • 定时调度时间00:30

    • 重跑属性:运行成功或失败后皆可重跑。

    其余参数保持默认即可。

    说明

    当前节点每日起调时间由业务流程虚拟节点workshop_start的定时调度时间控制,即每日00:30后才会调度。

    image

    资源属性

    选择准备环境阶段创建的Serverless资源组。

    image

    调度依赖

    • 确认依赖的上游节点:确认当前节点依赖的上游节点是否展示workshop_start节点,拉线设置的上游依赖将展示在此处,若未显示workshop_start节点,请确认是否已参照设计业务流程完成业务数据同步阶段的业务流程设计。

      本案例中,workshop_start节点定时时间到且执行完成后,将会触发当前节点执行。

    • 确认本节点输出:确认是否存在名为MaxCompute生产项目名称.ods_user_info_d_odps的节点输出。若不存在该节点输出,则需手动添加该输出名的节点输出。

    说明
    • DataWorks通过节点输出挂载节点依赖关系,为了方便下游SQL任务对同步任务产出表加工时,可通过自动解析机制基于表血缘快速为下游SQL节点添加当前同步任务的依赖,此处需要确认是否存在与同步产出表MaxCompute生产项目名称.ods_user_info_d_odps同名的节点输出

    image

配置用户日志同步链路

本离线同步节点将完成用户网站访问信息数据从平台提供的公共数据源HttpFile文件user_log.txt同步到MaxCompute表ods_raw_log_d_odps的同步链路配置操作。

  1. 双击离线同步节点ods_raw_log_d_odps,进入节点编辑页面。

  2. 网络与资源配置。

    在配置好数据来源我的资源组数据去向后,请单击下一步,根据页面提示完成连通性测试。详细配置如下。

    image

    配置项

    配置内容

    数据来源

    • 数据来源HttpFile

    • 数据源名称user_behavior_analysis_HttpFile

    我的资源组

    选择在准备环境阶段购买的Serverless资源组。

    数据去向

    • 数据去向MaxCompute

    • 数据源名称user_behavior_analysis_odps

  3. 任务配置。

    • 配置数据来源与去向。

      模块

      配置项

      配置内容

      图示

      数据来源

      文件路径

      本教程填入:/user_log.txt

      image

      文本类型

      下拉选择text类型。

      列分隔符

      本教程填入:|

      高级配置

      编码

      下拉选择UTF-8编码格式。

      image

      压缩格式

      下拉选择None格式

      是否跳过表头

      下拉选择No不跳过表头。

      数据去向

      Tunnel资源组

      本教程默认为公共传输资源,若您拥有独享tunnel quota,可下拉选择。

      说明

      MaxCompute的数据传输资源选择,具体请参考购买与使用独享数据传输服务资源组。如果独享tunnel quota因欠费或到期不可用,任务在运行中将会自动切换为公共传输资源

      image

      schema

      本教程选择default,若您DataWorks项目下拥有其他schema,可下拉选择。

      下拉选择在临时查询中创建的ods_raw_log_d_odps表。

      分区信息

      本教程填入${bizdate}参数。

      写入模式

      • 本教程下拉选择:。

      • 写入模式支持以下两种写入模式:

        • insert into:直接向表或静态分区中插入数据。

        • insert overwrite:先清空表中的原有数据,再向表或静态分区中插入数据。

      空字符串转为Null写入

      本教程选择:

      配置数据来源完成后,需单击确认表数据结构,是否能正常读取到日志文件。

    • 确认字段映射及通用配置。

      DataWorks通过配置源端与目标端字段映射关系,实现源端指定字段数据写入目标端指定字段,同时提供并发设置并发读写数据、提供限速功能避免同步对数据库造成影响、提供脏数据影响定义及分布式执行任务等功能。本教程使用默认配置。关于其他配置项说明,详情请参见通过向导模式配置离线同步任务

  4. 配置调度属性

    配置页面单击右侧调度配置,可进入调度配置面板配置调度与节点信息,详情可参见任务调度配置。以下为配置的内容:

    配置项

    配置内容

    图示

    调度参数

    调度参数值保持默认$bizdate即可。

    说明

    bizdate=$bizdate,获取前一天的日期,格式为yyyymmdd

    image

    时间属性

    • 调度周期

    • 定时调度时间00:30

    • 重跑属性:运行成功或失败后皆可重跑。

    其余参数保持默认即可。

    说明

    当前节点每日起调时间由业务流程虚拟节点workshop_start的定时调度时间控制,即每日00:30后才会调度。

    image

    资源属性

    选择准备环境阶段创建的Serverless资源组。

    image

    调度依赖

    • 确认依赖的上游节点:确认当前节点依赖的上游节点是否展示workshop_start节点,拉线设置的上游依赖将展示在此处,若未显示workshop_start节点,请确认是否已参照设计业务流程完成业务数据同步阶段的业务流程设计。

      本案例中,workshop_start节点定时时间到且执行完成后,将会触发当前节点执行。

    • 确认本节点输出:确认是否存在名为MaxCompute生产项目名称.ods_raw_log_d_odps的节点输出。若不存在该节点输出,则需手动添加该输出名的节点输出。

    说明

    DataWorks通过节点输出挂载节点依赖关系,为了方便下游SQL任务对同步任务产出表加工时,可通过自动解析机制基于表血缘快速为下游SQL节点添加当前同步任务的依赖,此处需要确认是否存在与同步产出表MaxCompute生产项目名称.ods_raw_log_d_odps同名的节点输出

    image

步骤三:运行并查看结果

运行业务流程

  1. 数据开发页面,双击业务流程下的用户画像分析_MaxCompute,打开Workflow业务流程面板后,单击工具栏中的image.png图标,按照上下游依赖关系运行业务流程。

  2. 确认执行情况:

    • 查看任务运行状态:节点处于image.png状态,即代表同步执行过程无问题。

    • 查看任务执行日志:右键单击ods_user_info_d_odpsods_raw_log_d_odps节点,选择查看日志。当日志中出现如下字样,表示同步节点运行成功,并成功同步数据。

      image

查看同步结果

预期运行业务流程后,MySQL中的用户基本信息ods_user_info_d表数据将全量同步至workshop2024_01_dev.ods_user_info_d_odps昨天的分区中,OSS中的用户网站访问日志user_log.txt将全量同步至workshop2024_01_dev.ods_raw_log_d_odps昨天的分区中。由于查询SQL不需要发布至生产环境执行,此时我们可以选择创建临时查询文件进行确认。

  1. 新建临时查询文件。

    数据开发页面的左侧导航栏,单击image.png,进入临时查询面板。右键单击临时查询,选择新建节点 > ODPS SQL

  2. 查询同步结果表。

    执行如下SQL语句,确认同步数据写入结果。查看导入ods_raw_log_d_odpsods_user_info_d_odps的记录数。

    //此处您需要变更分区过滤条件为您当前操作的实际业务日期。例如,任务运行的日期为20230621,则业务日期为20230620,即任务运行日期的前一天。
    select count(*) from ods_user_info_d_odps  where dt='业务时间'; 
    select count(*) from ods_raw_log_d_odps where dt='业务日期';

    image

    说明

    本教程由于在DataStudio(开发环境)执行,所以该数据将默认写入开发环境对应的引擎项目workshop2024_01_dev的指定表中。

后续步骤

现在,您已经完成了同步数据,您可以继续下一个教程。在下一个教程中,您将学习将用户基本信息数据、用户网站访问日志数据在MaxCompute中进行加工处理。详情请参见:加工数据