本教程以MySQL中的用户基本信息ods_user_info_d
表和OSS中的网站访问日志数据user_log.txt
文件为例,通过数据集成离线同步任务分别同步至MaxCompute的ods_user_info_d_odps
、ods_raw_log_d_odps
表。旨在介绍如何通过DataWorks数据集成实现异构数据源间的数据同步,完成数仓数据同步操作。
快速导入
DataWorks也为您提供了本教程相关代码,您可一键导入网站用户画像分析模板,直接体验配置数据质量监控。导入用户画像分析模板可参见:画像分析模板导入。
前提条件
章节目标
将案例提供的公共数据源中的数据同步至MaxCompute,完成业务流程设计中的数据同步部分的内容。
源端数据源类型 | 源端待同步数据 | 源端表结构 | 目标端数据源类型 | 接收源端数据的目标表 | 目标表结构 |
MySQL | 表:ods_user_info_d 用户基本信息数据 |
| MaxCompute |
|
|
HttpFile | 文件:user_log.txt 用户网站访问日志数据 | 一行为一条用户访问记录
| MaxCompute |
|
|
平台已提供本教程所需的测试数据及数据源,您需将该数据源添加至您的工作空间,即可在工作空间访问平台提供的测试数据。
本教程提供数据仅作为阿里云大数据开发治理平台DataWorks数据应用实操使用,所有数据均为人工Mock数据,并且只支持在数据集成模块读取数据。
进入数据开发
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入数据开发。
步骤一:设计业务流程
设计业务流程
新建业务流程。
数据开发需基于业务流程使用对应的开发组件进行具体开发操作。在创建节点之前,您需要先新建业务流程。具体操作方法可参见创建业务流程。
该业务流程的命名为:
用户画像分析_MaxCompute
。设计业务流程。
业务流程新建完成后,将自动展开该业务流程画布。请根据工作流程设计,在业务流程画布中单击新建节点,通过将节点组件拖拽至业务流程画布,并通过拉线设置节点上下游依赖的方式,设计数据同步阶段的业务流程。
在本教程中,由于虚拟节点和同步节点之间并无血缘关系,因此我们通过业务流程拉线的方式来设置节点的依赖关系。有关更多依赖关系设置方式的详细信息,详情请参见调度依赖配置指引。以下为各个节点的类型、命名以及作用的介绍。
节点分类
节点类型
节点命名
(以最终产出表命名)
节点作用
通用
虚拟节点
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调度执行,以下为虚拟节点关键调度配置,其他节点调度无须变更,实现逻辑详情请参见:场景:如何配置业务流程定时时间。其他调度配置相关说明,请参见:任务调度属性配置概述。
调度配置 | 图片展示 | 说明 |
调度时间配置 | 虚拟节点配置调度时间为00:30,该虚拟节点会在每日00:30调起当前业务流程并执行。 | |
调度依赖配置 | 由于虚拟节点 |
DataWorks中的所有节点都需要依赖于上游节点,数据同步阶段的所有任务都以虚拟节点workshop_start_odps
为依赖。换句话说,通过workshop_start_odps
节点来触发数据同步业务流程的执行。
步骤二:搭建同步链路
创建目标MaxCompute表
提前新建用于接收通过数据集成同步过来的原始数据的MaxCompute表。本教程仅快速创建相关表,更多MaxCompute表相关操作,请参见创建并使用MaxCompute表。
新建表入口。
新建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;
新建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;
提交并发布表。
表信息确认无误后,将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中的用户信息数据,并测试该数据源与同步数据的资源组网络是否连通。
进入数据源页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入管理中心。
进入工作空间管理中心页面后,单击左侧导航栏的
,进入数据源页面。
新建MySQL数据源。
在管理中心页面,单击进入
页面后单击新增数据源。在新增数据源对话框中,搜索选择数据源类型为MySQL。
在创建MySQL数据源对话框,配置各项参数。
参数
描述
数据源名称
请输入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中的用户网站访问测试数据,并测试该数据源与同步数据的资源组网络是否连通。
进入数据源页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入管理中心。
进入工作空间管理中心页面后,单击左侧导航栏的
,进入数据源页面。
新建HttpFile数据源。
在管理中心页面,单击进入
页面后单击新增数据源。在新增数据源对话框中,搜索选择数据源类型为HttpFile。
在创建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
的同步链路配置操作。
双击离线同步节点
ods_user_info_d_odps
,进入节点编辑页面。网络与资源配置。
在配置好数据来源、我的资源组和数据去向后,请单击下一步,根据页面提示完成连通性测试。详细配置如下。
配置项
配置内容
数据来源
数据来源:
HttpFile
数据源名称:
user_behavior_analysis_mysql
我的资源组
选择在准备环境阶段购买的Serverless资源组。
数据去向
数据去向:
MaxCompute
数据源名称:
user_behavior_analysis_odps
任务配置。
配置数据来源于去向。
模块
配置项
配置内容
图示
数据来源
表
选择MySQL表
ods_user_info_d
。切分键
建议使用主键或有索引的列作为切分键,仅支持类型为整型的字段。
此处配置切分键为
uid
字段。数据去向
Tunnel资源组
本教程默认为公共传输资源,若您拥有独享tunnel quota,可下拉选择。
说明MaxCompute的数据传输资源选择,具体请参考购买与使用独享数据传输服务资源组。如果独享tunnel quota因欠费或到期不可用,任务在运行中将会自动切换为公共传输资源。
schema
本教程选择default,若您DataWorks项目下拥有其他schema,可下拉选择。
表
下拉选择在临时查询中创建的
ods_user_info_d_odps
表。分区信息
本教程填入
${bizdate}
参数。写入模式
本教程下拉选择:。
写入模式支持以下两种写入模式:
insert into:直接向表或静态分区中插入数据。
insert overwrite:先清空表中的原有数据,再向表或静态分区中插入数据。
空字符串转为Null写入
本教程选择:否。
确认字段映射及通用配置。
DataWorks通过配置源端与目标端字段映射关系,实现源端指定字段数据写入目标端指定字段,同时提供并发设置并发读写数据、提供限速功能避免同步对数据库造成影响、提供脏数据影响定义及分布式执行任务等功能。本教程使用默认配置。关于其他配置项说明,详情请参见通过向导模式配置离线同步任务。
配置调度属性。
配置页面单击右侧调度配置,可进入调度配置面板配置调度与节点信息,详情可参见任务调度配置。以下为配置的内容:
配置项
配置内容
图示
调度参数
调度参数值保持默认
$bizdate
即可。说明bizdate=$bizdate,获取前一天的日期,格式为
yyyymmdd
。时间属性
调度周期:
日
。定时调度时间:
00:30
。重跑属性:运行成功或失败后皆可重跑。
其余参数保持默认即可。
说明当前节点每日起调时间由业务流程虚拟节点workshop_start的定时调度时间控制,即每日00:30后才会调度。
资源属性
选择准备环境阶段创建的Serverless资源组。
调度依赖
确认依赖的上游节点:确认当前节点依赖的上游节点是否展示
workshop_start
节点,拉线设置的上游依赖将展示在此处,若未显示workshop_start
节点,请确认是否已参照设计业务流程完成业务数据同步阶段的业务流程设计。本案例中,
workshop_start
节点定时时间到且执行完成后,将会触发当前节点执行。确认本节点输出:确认是否存在名为
MaxCompute生产项目名称.ods_user_info_d_odps
的节点输出。若不存在该节点输出,则需手动添加该输出名的节点输出。
配置用户日志同步链路
本离线同步节点将完成用户网站访问信息数据从平台提供的公共数据源HttpFile文件user_log.txt
同步到MaxCompute表ods_raw_log_d_odps
的同步链路配置操作。
双击离线同步节点
ods_raw_log_d_odps
,进入节点编辑页面。网络与资源配置。
在配置好数据来源、我的资源组和数据去向后,请单击下一步,根据页面提示完成连通性测试。详细配置如下。
配置项
配置内容
数据来源
数据来源:
HttpFile
数据源名称:
user_behavior_analysis_HttpFile
我的资源组
选择在准备环境阶段购买的Serverless资源组。
数据去向
数据去向:
MaxCompute
数据源名称:
user_behavior_analysis_odps
任务配置。
配置数据来源与去向。
模块
配置项
配置内容
图示
数据来源
文件路径
本教程填入:
/user_log.txt
。文本类型
下拉选择
text
类型。列分隔符
本教程填入:
|
。高级配置
编码
下拉选择
UTF-8
编码格式。压缩格式
下拉选择
None
格式是否跳过表头
下拉选择
No
不跳过表头。数据去向
Tunnel资源组
本教程默认为公共传输资源,若您拥有独享tunnel quota,可下拉选择。
说明MaxCompute的数据传输资源选择,具体请参考购买与使用独享数据传输服务资源组。如果独享tunnel quota因欠费或到期不可用,任务在运行中将会自动切换为公共传输资源。
schema
本教程选择default,若您DataWorks项目下拥有其他schema,可下拉选择。
表
下拉选择在临时查询中创建的
ods_raw_log_d_odps
表。分区信息
本教程填入
${bizdate}
参数。写入模式
本教程下拉选择:。
写入模式支持以下两种写入模式:
insert into:直接向表或静态分区中插入数据。
insert overwrite:先清空表中的原有数据,再向表或静态分区中插入数据。
空字符串转为Null写入
本教程选择:否。
配置数据来源完成后,需单击确认表数据结构,是否能正常读取到日志文件。
确认字段映射及通用配置。
DataWorks通过配置源端与目标端字段映射关系,实现源端指定字段数据写入目标端指定字段,同时提供并发设置并发读写数据、提供限速功能避免同步对数据库造成影响、提供脏数据影响定义及分布式执行任务等功能。本教程使用默认配置。关于其他配置项说明,详情请参见通过向导模式配置离线同步任务。
配置调度属性。
配置页面单击右侧调度配置,可进入调度配置面板配置调度与节点信息,详情可参见任务调度配置。以下为配置的内容:
配置项
配置内容
图示
调度参数
调度参数值保持默认
$bizdate
即可。说明bizdate=$bizdate,获取前一天的日期,格式为
yyyymmdd
。时间属性
调度周期:
日
。定时调度时间:
00:30
。重跑属性:运行成功或失败后皆可重跑。
其余参数保持默认即可。
说明当前节点每日起调时间由业务流程虚拟节点workshop_start的定时调度时间控制,即每日00:30后才会调度。
资源属性
选择准备环境阶段创建的Serverless资源组。
调度依赖
确认依赖的上游节点:确认当前节点依赖的上游节点是否展示
workshop_start
节点,拉线设置的上游依赖将展示在此处,若未显示workshop_start
节点,请确认是否已参照设计业务流程完成业务数据同步阶段的业务流程设计。本案例中,
workshop_start
节点定时时间到且执行完成后,将会触发当前节点执行。确认本节点输出:确认是否存在名为
MaxCompute生产项目名称.ods_raw_log_d_odps
的节点输出。若不存在该节点输出,则需手动添加该输出名的节点输出。
步骤三:运行并查看结果
运行业务流程
在数据开发页面,双击业务流程下的
用户画像分析_MaxCompute
,打开Workflow业务流程面板后,单击工具栏中的图标,按照上下游依赖关系运行业务流程。确认执行情况:
查看任务运行状态:节点处于状态,即代表同步执行过程无问题。
查看任务执行日志:右键单击
ods_user_info_d_odps
、ods_raw_log_d_odps
节点,选择查看日志。当日志中出现如下字样,表示同步节点运行成功,并成功同步数据。
查看同步结果
预期运行业务流程后,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不需要发布至生产环境执行,此时我们可以选择创建临时查询文件进行确认。
新建临时查询文件。
在数据开发页面的左侧导航栏,单击,进入临时查询面板。右键单击临时查询,选择
。查询同步结果表。
执行如下SQL语句,确认同步数据写入结果。查看导入
ods_raw_log_d_odps
和ods_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='业务日期';
说明本教程由于在DataStudio(开发环境)执行,所以该数据将默认写入开发环境对应的引擎项目
workshop2024_01_dev
的指定表中。
后续步骤
现在,您已经完成了同步数据,您可以继续下一个教程。在下一个教程中,您将学习将用户基本信息数据、用户网站访问日志数据在MaxCompute中进行加工处理。详情请参见:加工数据。