同步数据

更新时间:2025-03-14 07:45:57

本文将介绍如何创建HttpFileMySQL数据源以访问用户信息和网站日志数据,配置数据同步链路将这些数据同步到在环境准备阶段创建的OSS存储中,并通过创建EMR Hive外表解析OSS中存储的数据。通过查询验证数据同步结果,确认是否完成整个数据同步操作。

前提条件

  • 开始本文的操作前,请准备好需要使用的环境。详情请参见准备环境

  • 为确保网络互通,请在ECS管理控制台为您所创建的EMR集群绑定的安全组添加安全组规则,开放ECS10000端口,设置授权对象为资源组VPC的交换机网段。详情请参见添加安全组规则

步骤一:新建数据源

为确保后续数据处理流程的顺利进行,您需要在DataWorks工作空间中绑定如下数据源,用于获取和存储测试数据。

  • MySQL数据源:DataWorks平台提供的用于存储用户基本信息的测试数据源。

  • Httpfile数据源:DataWorks平台提供的用于存储用户网站访问记录的测试数据源。

  • OSS数据源:您在EMR环境准备中创建的EMR OSS-HDFS存储。用于存储从MySQL数据源和HTTP文件数据源同步的用户基本信息及用户网站访问记录的测试数据。

新建MySQL数据源(user_behavior_analysis_mysql

本教程提供的用户基本信息存储在MySQL数据库中,您需要创建MySQL数据源,获取MySQL数据库中的用户基本信息数据(ods_user_info_d)。

  1. 管理中心页面,单击左侧导航栏的数据源

  2. 单击新增数据源,搜索选择数据源类型为MySQL

  3. 创建MySQL数据源页面,配置相关参数。在本教程中开发环境和生产环境都按如下示例值填写。

    以下为本教程所需配置的关键参数,未说明参数保持默认即可。

    参数

    描述

    参数

    描述

    数据源名称

    输入数据源名称,本教程请填写user_behavior_analysis_mysql

    数据源描述

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

    配置模式

    选择连接串模式

    连接地址

    • 主机地址IP:rm-bp1z69dodhh85z9qa.mysql.rds.aliyuncs.com

    • 端口号:3306

    数据库名称

    输入数据库名,本教程请填写workshop

    用户名

    输入用户名,本教程请填写workshop

    密码

    输入密码,本教程请填写workshop#2017

    认证选项

    无认证。

  4. 连通配置区域,分别单击生产环境和开发环境的测试连通性,确保连通状态为可连通

    重要
    • 需确保资源组已绑定至工作空间,并配置了公网访问能力,否则后续数据同步时将会报错。配置步骤请参见准备环境

    • 如果您无可选的资源组,可参考链接配置区域的说明提示,单击前往购买绑定已购资源组

  5. 单击完成创建

新建HttpFile数据源(user_behavior_analysis_httpfile

本教程提供的用户网站访问记录数据存储在DataWorks平台用于测试的OSS中,您需要创建Httpfile数据源,获取该OSS中的用户网站访问记录(user_log.txt)。

  1. 进入数据源页面。

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

    2. 单击左侧导航栏的数据源,进入数据源页面。

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

  3. 创建HttpFile数据源页面,配置相关参数。在本教程中开发环境和生产环境都按如下示例值填写。

    以下为本教程所需配置的关键参数,未说明参数保持默认即可。

    参数

    描述

    参数

    描述

    数据源名称

    输入数据源名称,本教程请填写user_behavior_analysis_httpfile

    数据源描述

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

    URL域名

    开发环境和生产环境的URL域名均配置为https://dataworks-workshop-2024.oss-cn-shanghai.aliyuncs.com

  4. 连通配置区域,分别单击生产环境和开发环境的测试连通性,确保连通状态为可连通

    重要
    • 需确保资源组已绑定至工作空间,并配置了公网访问能力,否则后续数据同步时将会报错。配置步骤请参见准备环境

    • 如果您无可选的资源组,可参考链接配置区域的说明提示,单击前往购买绑定已购资源组

  5. 单击完成创建

新建OSS数据源(test_g)

您可以通过以下操作,将EMR环境准备中创建的OSS存储添加到DataWorks平台,以便存储从MySQL数据源和HttpFile数据源同步过来的数据。

  1. 管理中心页面,单击左侧导航栏的数据源

  2. 单击新增数据源,搜索选择数据源类型为OSS

  3. 创建OSS数据源页面,配置各项参数。在本教程中开发环境生产环境都按如下示例值填写。

    参数

    描述

    参数

    描述

    数据源名称

    输入数据源的名称,本示例为test_g

    数据源描述

    对数据源进行简单描述。

    访问模式

    选择Access Key模式

    AccessKey ID

    当前登录账号的AccessKey ID,您可以进入AccessKey页面复制AccessKey ID。

    AccessKey Secret

    输入当前登录账号的AccessKey Secret。

    重要

    AccessKey Secret只在创建时显示,不支持后续再次查看,请妥善保管。如果AccessKey泄露或丢失,请删除并创建新的AccessKey

    地域

    选择华东2(上海)地域。

    Endpoint

    输入oss-cn-shanghai-internal.aliyuncs.com

    Bucket

    您准备环境时创建EMR集群配置的OSS Bucket的名称,示例为dw-emr-demo

  4. 连通配置区域,分别单击生产环境和开发环境的测试连通性,确保连通状态为可连通

    重要
    • 需确保资源组已绑定至工作空间,并配置了公网访问能力,否则后续数据同步时将会报错。配置步骤请参见准备环境

    • 如果您无可选的资源组,可参考链接配置区域的说明提示,单击前往购买绑定已购资源组

  5. 单击完成创建

步骤二:搭建同步链路

本步骤需要搭建同步链路,将用户基本信息数据和网站访问记录数据分别同步至Hive的表中,为后续加工数据做准备。

  1. 进入DataWorks工作空间列表页,在顶部切换至目标地域,找到已创建的工作空间,单击操作列的快速进入 > Data Studio,进入Data Studio。

  2. Data Studio一级功能入口单击image,进入数据开发,在二级功能入口找到项目目录区域。

  3. 新建目录work和工作流workshop_emr,详情请参见项目目录周期工作流

  4. 进入添加节点面板,新建虚拟节点、离线同步及EMR Hive节点。

    1. 选择通用 > 虚拟节点拖拽至右侧的编辑页面,在添加节点对话框中,输入节点名称workshop_start_emr后单击确认

    2. 选择通用 > 虚拟节点拖拽至右侧的编辑页面,在添加节点对话框中,输入节点名称ods_user_info_d_2oss_emrods_raw_log_d_2oss_emr,用于后续同步MySQL用户信息与HttpFile日志信息到您所创建的OSS中,最后单击确认

    3. 选择EMR > EMR Hive拖拽至右侧的编辑页面,在添加节点对话框中,输入节点名称ods_user_info_d_emrods_raw_log_d_emr,用于将您所创建的OSS中的数据加载到Hive表中,最后单击确认

    本教程节点名称示例及作用如下:

    节点类型

    节点名称

    节点作用

    节点类型

    节点名称

    节点作用

    image虚拟节点

    workshop_start_emr

    用于统筹管理整个用户画像分析工作流,可使数据流转路径更清晰。该节点为空跑任务,无须编辑代码。

    image离线同步节点

    ods_user_info_d_2oss_emr

    用于将存储于MySQL的用户基本信息数据同步至您所创建的OSS数据源(test_g)中。

    image离线同步节点

    ods_raw_log_d_2oss_emr

    用于将存储于Httpfile数据源(OSS)中的用户网站访问记录同步至您所创建的OSS数据源(test_g)中。

    imageEMR Hive节点

    ods_user_info_d_emr

    用于将存储于您所创建OSS数据源(test_g)中的用户基本信息数据解析至Hiveods_user_info_d_emr表。

    imageEMR Hive节点

    ods_raw_log_d_emr

    用于将存储于您所创建OSS数据源(test_g)中的用户网站访问记录解析至Hiveods_raw_log_d_emr表。

  5. 在工作流开发面板,通过拖拽连线,将workshop_start_emr节点设置为两个离线同步节点的上游节点。最终效果如下:

    image
  6. 工作流调度配置。

    在工作流页面右侧单击调度配置,配置相关参数。以下为本教程所需配置的关键参数,未说明参数保持默认即可。

    调度配置参数

    说明

    调度配置参数

    说明

    调度参数

    为整个工作流设置调度参数,工作流中的内部节点可直接使用。本教程配置为bizdate=$[yyyymmdd-1],获取前一天的日期。

    调度周期

    本教程配置为

    调度时间

    本教程配置调度时间00:30,该工作流会在每日00:30启动。

    节点依赖配置

    Workflow无上游依赖,可不配置。为了方便统一管理,您可以单击使用工作空间根节点,将工作流挂载到工作空间根节点下。

    工作空间根节点命名格式为:工作空间名_root

  7. 完成工作流调度时间配置后,单击保存工作流。并在变更检查弹窗确认保存。

步骤三:配置同步任务

您可以通过以下步骤将MySQL数据源中的用户信息和HttpFile数据源中的日志信息同步到您所创建的OSS中,并通过创建Hive外部表来解析获取该OSS中存储的数据。

配置虚拟节点

您可根据以下操作进行虚拟节点的调度配置。

  1. 打开虚拟节点。

    鼠标悬浮于虚拟节点上,单击上方出现的打开节点,进入虚拟节点编辑页面。

  2. 配置虚拟节点。

    打开节点右侧的调度配置,配置以下参数信息。

    参数

    说明

    参数

    说明

    重跑属性

    设置为运行成功或失败皆可重跑

    调度资源组

    选择您在环境准备中创建的Serverless资源组。

    节点依赖配置

    Workflow无上游依赖,可不配置。为了方便统一管理,您可以单击使用工作空间根节点,将工作流挂载到工作空间根节点下。

    工作空间根节点命名格式为:工作空间名_root

  3. 保存虚拟任务。

    配置完成后,单击工具栏中的image图标保存任务节点。

同步MySQL数据源的用户信息至OSS数据源

您可根据以下操作将MySQL数据源中的用户信息同步到您所创建的OSS中。

  1. 打开离线同步节点。

    鼠标悬浮于离线同步节点ods_user_info_d_2oss_emr上,单击上方出现的打开节点,进入离线同步节点网络与资源配置页面。

  2. 网络与资源配置。

    参考以下参数信息,完成网络与资源配置。等待完成连通性测试后,单击下一步,进入配置任务界面。

    参数

    描述

    数据来源

    • 数据来源MySQL

    • 数据源名称user_behavior_analysis_mysql

    我的资源组

    请在我的资源组下方选择已购买的Serverless资源组。

    数据去向

    • 数据去向OSS

    • 数据源名称:选择前文创建的OSS数据源,此处示例为test_g

  3. 配置数据来源与去向。

    1. 以下为本教程所需配置的关键参数,未说明参数保持默认即可。

      参数

      描述

      数据来源

      • :选择数据源中的ods_user_info_d

      • 切分键:建议使用主键或有索引的列作为切分键,仅支持类型为整型的字段。此处设置切分键为uid

      数据去向

      • 文本类型:选择text类型。

      • 文件名(含路径):根据您OSS的目录进行输入,示例为ods_user_info_d/user_${bizdate}/user_${bizdate}.txt。其中ods_user_info_d为您OSS的目录名,$bizdate表示获取前一天的日期。

      • 列分隔符:输入列分隔符为|

    2. 确认字段映射通道控制

      DataWorks通过配置源端与目标端字段映射关系,实现源端指定字段数据写入目标端指定字段,同时支持设置任务并发数、脏数据策略等。本教程脏数据策略配置为不容忍脏数据,其他配置保持默认。更多信息,请参见通过向导模式配置离线同步任务

  4. 配置调试参数。

    配置页面单击右侧调试配置,配置以下参数,用于在步骤四调试运行中使用调试配置的相关参数测试运行。

    配置项

    配置内容

    资源组

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

    脚本参数

    无需配置。本教程提供的示例代码中统一使用${bizdate}表示业务日期,在步骤四调试运行工作流时,设置本次运行值为具体常量(例如20250223),任务运行将会使用此常量替换任务中定义的变量。

  5. 保存离线同步任务。

    配置完成后,单击工具栏中的image图标保存任务节点。

同步HttpFile数据源的日志信息至OSS数据源

您可根据以下操作将HttpFile数据源中的日志信息同步到您所创建的OSS中。

  1. 打开离线同步节点。

    鼠标悬浮于离线同步节点ods_raw_log_d_2oss_emr上,单击上方出现的打开节点,进入离线同步节点网络与资源配置页面。

  2. 网络与资源配置。

    参考以下参数信息,完成网络与资源配置。等待完成连通性测试后,单击下一步,进入配置任务界面。

    参数

    描述

    数据来源

    • 数据来源HttpFile

    • 数据源名称user_behavior_analysis_httpfile

    我的资源组

    请在我的资源组下方选择已购买的Serverless资源组。

    数据去向

    • 数据去向OSS

    • 数据源名称:选择前文创建的OSS数据源,此处示例为test_g

  3. 配置数据来源与去向。

    1. 以下为本教程所需配置的关键参数,未说明参数保持默认即可。

      参数

      描述

      数据来源

      • 文件路径/user_log.txt

      • 文本类型:选择text类型。

      • 列分隔符:输入列分隔符为|

      • 压缩格式:包括None、Gzip、Bzip2Zip四种类型,此处选择None

      • 是否跳过表头:选择No。

      数据去向

      • 文本类型:选择text类型。

      • 文件名(含路径):根据您OSS的目录进行输入,示例为ods_raw_log_d/log_${bizdate}/log_${bizdate}.txt,其中ods_raw_log_d为您OSS的目录名,$bizdate表示获取前一天的日期。

      • 列分隔符:输入列分隔符为|

    2. 配置调试参数。

      配置页面单击右侧调试配置,配置以下参数,用于在步骤四调试运行中使用调试配置的相关参数测试运行。

      配置项

      配置内容

      资源组

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

      脚本参数

      无需配置。本教程提供的示例代码中统一使用${bizdate}表示业务日期,在步骤四调试运行工作流时,设置本次运行值为具体常量(例如20250223),任务运行将会使用此常量替换任务中定义的变量。

  4. 保存离线同步任务。

    配置完成后,单击工具栏中的image图标保存任务节点。

步骤四:运行同步任务

Workflow画布顶部工具栏中,单击运行,设置各节点定义的参数变量在本次运行中的取值(本教程使用20250223,您可以按需修改),单击确定后,等待运行完成。

步骤五:解析OSS数据

等待离线同步任务运行完成,您可通过以下步骤,创建Hive外部表,以解析您在test_g数据源OSS中存储的测试数据。

新建ods_user_info_d_emr表解析数据

  1. 开发代码。

    鼠标悬浮于EMR Hive节点ods_user_info_d_emr上,单击上方出现的打开节点,进入EMR Hive节点编辑页面。输入以下示例SQL语句。

    CREATE EXTERNAL TABLE IF NOT EXISTS ods_user_info_d_emr
    (
        `uid` STRING COMMENT '用户ID',
        `gender` STRING COMMENT '性别',
        `age_range` STRING COMMENT '年龄段',
        `zodiac` STRING COMMENT '星座'
    ) PARTITIONED BY (
      dt STRING
    )
    ROW FORMAT  delimited fields terminated by '|'
    LOCATION 'oss://dw-emr-demo/ods_user_info_d/';
    
    ALTER TABLE ods_user_info_d_emr ADD IF NOT EXISTS PARTITION (dt='${bizdate}')
    LOCATION 'oss://dw-emr-demo/ods_user_info_d/user_${bizdate}/';
    说明

    上述代码中的LOCATION为示例路径,与之前配置离线同步任务时的数据去向相同,需要输入您建立的文件路径名称,其中dw-emr-demo是您准备环境时创建的OSS Bucket域名。

  2. 配置调试参数。

    配置页面单击右侧调试配置,配置以下参数,用于在调试运行中使用调试配置的相关参数测试运行。

    配置项

    配置内容

    资源组

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

    脚本参数

    无需配置。本教程提供的示例代码中统一使用${bizdate}表示业务日期,在调试运行任务时,设置本次运行值为具体常量(例如20250223),任务运行将会使用此常量替换任务中定义的变量。

  3. 保存并运行节点任务。

    配置完成后,您可单击保存和运行节点。

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

    • 节点处于image状态,如出现java.net.ConnectException: Connection timed out (Connection timed out)报错,您需在ECS管理控制台添加安全组规则,开放ECS10000端口,设置授权对象为资源组VPC的交换机网段。您可以在资源组列表单击对应资源组的网络设置获取交换机网段。关于如何添加安全组规则请参见添加安全组规则

  4. 查询数据同步结果。

    1. 进入DataWorks工作空间列表页,在顶部切换至目标地域,找到已创建的工作空间,单击操作列的快速进入 > Data Studio,进入Data Studio。

    2. Data Studio一级功能入口单击image,进入数据开发,在二级功能入口找到项目目录区域。

    3. 右键单击您所创建的work目录,选择新建节点... > EMR > EMR Hive,自定义EMR Hive节点名,单击回车完成节点的创建。

      进入EMR Hive节点编辑页面,将下面脚本中的业务日期替换为当前业务日期,确认同步数据写入结果。查看导入ods_raw_log_d_emrods_user_info_d_emr的记录数。

      说明

      查询语句中的分区列需要更新为业务日期。例如,任务运行的日期为20250223,则业务日期为20250222,即任务运行日期的前一天。

      SELECT * FROM ods_user_info_d_emr WHERE dt=业务日期; 
      • 上述命令查询存在数据,即表示数据加工已完成。

      • 如果没有数据,请确保运行工作流时,配置的本次运行值与此处查询时dt指定的业务日期一致,您可以单击工作流,单击右侧的运行历史,在运行记录右侧操作列单击查看,然后在工作流的运行日志中确认运行工作流时业务日期的取值(partition=[pt=xxx])。

新建ods_raw_log_d_emr表解析数据

  1. 开发代码。

    鼠标悬浮于EMR Hive节点ods_raw_log_d_emr上,单击上方出现的打开节点,进入EMR Hive节点编辑页面。输入以下示例SQL语句。

    --创建OSS日志对应目标表
    CREATE EXTERNAL TABLE IF NOT EXISTS ods_raw_log_d_emr
    (
      `col` STRING
    ) PARTITIONED BY (
      dt STRING
    );
    ALTER TABLE ods_raw_log_d_emr ADD IF NOT EXISTS PARTITION (dt='${bizdate}')
    LOCATION 'oss://dw-emr-demo/ods_raw_log_d/log_${bizdate}/';
    说明

    上述代码中的LOCATION为示例路径,与之前配置离线同步任务时的数据去向相同,需要输入您建立的文件路径名称,其中dw-emr-demo是您准备环境时创建的OSS Bucket域名。

  2. 配置调试参数。

    配置页面单击右侧调试配置,配置以下参数,用于在调试运行中使用调试配置的相关参数测试运行。

    配置项

    配置内容

    资源组

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

    脚本参数

    无需配置。本教程提供的示例代码中统一使用${bizdate}表示业务日期,在调试运行任务时,设置本次运行值为具体常量(例如20250223),任务运行将会使用此常量替换任务中定义的变量。

  3. 保存运行节点任务。

    配置完成后,您可单击保存和运行节点。

  4. 查询数据同步结果。

    1. 进入DataWorks工作空间列表页,在顶部切换至目标地域,找到已创建的工作空间,单击操作列的快速进入 > Data Studio,进入Data Studio。

    2. Data Studio一级功能入口单击image,进入数据开发,在二级功能入口找到项目目录区域。

    3. 右键单击您所创建的work目录,选择新建节点... > EMR > EMR Hive,自定义EMR Hive节点名,单击回车完成节点的创建。

      进入EMR Hive节点编辑页面,将下面脚本中的业务日期替换为当前业务日期,确认同步数据写入结果。查看导入ods_raw_log_d_emrods_user_info_d_emr的记录数。

      说明

      查询语句中的分区列需要更新为业务日期。例如,任务运行的日期为20250223,则业务日期为20250222,即任务运行日期的前一天。

      SELECT * FROM ods_raw_log_d_emr WHERE dt=业务日期; 
      • 上述命令查询存在数据,即表示数据加工已完成。

      • 如果没有数据,请确保运行工作流时,配置的本次运行值与此处查询时dt指定的业务日期一致,您可以单击工作流,单击右侧的运行历史,在运行记录右侧操作列单击查看,然后在工作流的运行日志中确认运行工作流时业务日期的取值(partition=[pt=xxx])。

后续步骤

现在,您已经学习了如何进行日志数据同步,完成数据的同步,您可以继续下一个教程。在该教程中,您将学习如何对同步的数据进行计算与分析。详情请参见加工数据

  • 本页导读 (1)
  • 前提条件
  • 步骤一:新建数据源
  • 新建MySQL数据源(user_behavior_analysis_mysql)
  • 新建HttpFile数据源(user_behavior_analysis_httpfile)
  • 新建OSS数据源(test_g)
  • 步骤二:搭建同步链路
  • 步骤三:配置同步任务
  • 配置虚拟节点
  • 同步MySQL数据源的用户信息至OSS数据源
  • 同步HttpFile数据源的日志信息至OSS数据源
  • 步骤四:运行同步任务
  • 步骤五:解析OSS数据
  • 新建ods_user_info_d_emr表解析数据
  • 新建ods_raw_log_d_emr表解析数据
  • 后续步骤