本文为您介绍如何通过DataWorks采集日志数据至EMR引擎。
前提条件
背景信息
新建OSS数据源
- 进入数据源管理页面。
- 登录DataWorks控制台。
- 在左侧导航栏,单击工作空间列表。
- 单击相应工作空间后的进入数据集成。如果您已在DataWorks的某个功能模块,请单击左上方的
图标,选择全部产品 > 数据汇聚 > 数据集成,进入数据集成页面。
- 在左侧导航栏,单击数据源,进入工作空间管理 > 数据源管理页面。
- 在数据源管理页面,单击右上方的新增数据源。
- 在新增数据源对话框中,选择数据源类型为OSS。
- 在新增OSS数据源对话框中,配置各项参数。此处您可以直接按照示例参数进行填写。
参数 描述 数据源名称 输入数据源名称,示例为oss_workshop_log。 数据源描述 对数据源进行简单描述。 Endpoint 输入Endpoint,示例为 http://oss-cn-shanghai-internal.aliyuncs.com
。Bucket 输入Bucket名称,示例为new-dataworks-workshop。 AccessKey ID 输入访问密钥中的AccessKey ID,示例为LTAI4FvGT3iU4xjKotpUMAjS。 AccessKey Secret 输入访问密钥中的AccessKey Secret,示例为9RSUoRmNxpRC9EhC4m9PjuG7Jzy7px。 - 连通性测试通过后,单击完成。
新建RDS数据源
- 在数据源管理页面,单击右上方的新增数据源。
- 在新增数据源对话框中,选择数据源类型为MySQL。
- 在新增MySQL数据源对话框中,配置各项参数。此处您可以直接按照示例参数进行填写。
参数 描述 数据源类型 选择阿里云实例模式。 数据源名称 输入数据源名称,示例为rds_workshop_log。 数据源描述 对数据源进行简单描述。 地区 选择RDS实例所在的区域,示例为华东2-上海。 RDS实例ID 输入rm-2ev0681lc7042g16u。
RDS实例主账号ID 输入5600815724958382。
数据库名 输入数据库名称,示例为workshop。 用户名 输入用户名,示例为workshop。 密码 输入密码,示例为workshop#2017。 - 连通性测试通过后,单击完成。
新建私有OSS数据源
本次实验将EMR引擎的数据存储在OSS数据源中。
- 在数据源管理页面,单击右上方的新增数据源。
- 在新增数据源对话框中,选择数据源类型为OSS。
- 在新增OSS数据源对话框中,配置各项参数。
参数 描述 数据源名称 输入数据源的名称。 数据源描述 对数据源进行简单描述。 Endpoint 输入 http://oss-cn-shanghai-internal.aliyuncs.com
。Bucket 您在环境准备中创建的OSS Bucket的名称,示例为dw-emr-demo。 AccessKey ID 当前登录账号的AccessKey ID,您可以进入安全信息管理页面复制AccessKey ID。 AccessKey Secret 输入当前登录账号的AccessKey Secret。 - 连通性测试通过后,单击完成。
新建业务流程
- 单击左上方的
图标,选择全部产品 > 数据开发 > DataStudio(数据开发)。
- 在数据开发面板,右键单击业务流程,选择新建业务流程。
- 在新建业务流程对话框中,输入业务名称和描述。注意 业务名称不能超过128个字符,且必须是大小写字母、中文、数字、下划线(_)以及英文句号(.)。
- 单击新建。
- 进入业务流程开发面板,鼠标单击虚拟节点并拖拽至右侧的编辑页面。在新建节点对话框中,输入节点名称为workstart,单击提交。
以同样的方式新建两个离线同步节点,节点名称分别为Log2oss和User2oss。
- 通过拖拽连线,将workstart节点设置为两个离线同步节点的上游节点。
配置workstart节点
- 在数据开发页面,双击相应业务流程下的虚拟节点。打开该节点的编辑页面,单击右侧的调度配置。
- 在调度依赖区域,单击使用工作空间根节点,设置workstart节点的上游节点为工作空间根节点。 由于新版本给每个节点都设置了输入输出节点,所以需要给workstart节点设置一个输入。此处设置其上游节点为工作空间根节点,通常命名为工作空间名_root。
- 配置完成后,单击左上方的
图标。
配置离线同步节点
- 同步RDS数据源的用户信息至自建的OSS。
- 在数据开发页面,双击User2oss节点,进入节点配置页面。
- 选择数据来源。
参数 描述 数据源 选择MySQL > rds_workshop_log数据源。 表 选择数据源中的ods_user_info_d。 数据过滤 您将要同步数据的筛选条件,暂时不支持limit关键字过滤。此处可以不填写。 切分键 建议使用主键或有索引的列作为切分键,仅支持类型为整型的字段。此处设置切分键为uid。 - 选择数据去向。
参数 描述 数据源 选择前文创建的OSS数据源,此处示例为OSS > dw_emr_demo数据源。 Object前缀 根据您自建OSS的目录进行输入,示例为ods_user_info_d/user_${bizdate}/user_${bizdate}.txt。 文本类型 选择text类型。 列分隔符 输入列分隔符为|。 编码格式 默认为UTF-8格式。 null值 表示null值的字符串,此处可以不填写。 时间格式 时间序列化格式,此处可以不填写。 前缀冲突 此处选择替换原有文件。 - 配置字段映射。
- 配置通道控制,单击工具栏中的
图标。
- 单击工具栏中的
图标,在已有的脚本中手动添加参数"writeSingleObject": "true"和"suffix": ".txt"。
说明- writeSingleObject和suffix参数仅支持脚本模式进行添加。
- 存储的路径object需要与自建OSS中的目录一致。
- 配置完成后,单击工具栏中的
图标。
- 同步OSS数据源的日志信息至自建的OSS。
- 在数据开发页面,双击Log2oss节点,进入节点配置页面。
- 选择数据来源。
参数 描述 数据源 选择OSS > oss_workshop_log数据源。 Object前缀 输入user_log.txt。 文本类型 选择text类型。 列分隔符 输入列分隔符为|。 编码格式 默认为UTF-8格式。 null值 表示null值的字符串,此处可以不填写。 压缩格式 包括None、Gzip、Bzip2和Zip四种类型,此处选择None。 是否包含表头 默认为No。 - 选择数据去向。
参数 描述 数据源 选择前文创建的OSS数据源,此处示例为OSS > dw_emr_demo数据源。 Object前缀 根据您自建OSS的目录进行输入,示例为ods_raw_log_d/user_log_${bizdate}/user_log_${bizdate}.txt。 文本类型 选择text类型。 列分隔符 输入列分隔符为|。 编码格式 默认为UTF-8格式。 null值 表示null值的字符串,此处可以不填写。 时间格式 时间序列化格式,此处可以不填写。 前缀冲突 此处选择替换原有文件。 - 配置字段映射。注意 源数据表中只有一列数据,此处需要删除其它映射过来的空列。
- 配置通道控制,单击工具栏中的
图标。
- 单击工具栏中的
图标,在已有的脚本中手动添加参数"writeSingleObject": "true"和"suffix": ".txt"。
说明- writeSingleObject和suffix参数仅支持脚本模式进行添加。
- 存储的路径object需要与自建OSS中的目录一致。
- 配置完成后,单击工具栏中的
图标。
新建表
- 在数据开发页面打开新建的业务流程,右键单击EMR,选择新建 > EMR Hive。
- 在新建节点对话框中,输入节点名称,单击提交。此处需要新建两个EMR Hive节点(ods_user_info_d和ods_raw_log_d),分别新建存储同步过来的OSS日志数据和RDS日志数据的两张表。
- 分别在EMR Hive节点中,选择EMR引擎并输入建表语句,单击保存并运行各建表语句。
- 新建ods_user_info_d表。
双击ods_user_info_d节点,在右侧的编辑页面输入下述建表语句。
CREATE EXTERNAL TABLE IF NOT EXISTS ods_user_info_d ( `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 ADD IF NOT EXISTS PARTITION (dt=${bizdate}) LOCATION 'oss://dw-emr-demo/ods_user_info_d/user_${bizdate}/';
说明 上述代码中的location为示例路径,需要输入您建立的文件夹的路径名称。 - 新建ods_raw_log_d表。
双击ods_raw_log_d节点,在右侧的编辑页面输入下述建表语句。
--创建OSS日志对应目标表 CREATE EXTERNAL TABLE IF NOT EXISTS ods_raw_log_d ( `col` STRING ) PARTITIONED BY ( dt STRING ); ALTER TABLE ods_raw_log_d ADD IF NOT EXISTS PARTITION (dt=${bizdate}) LOCATION 'oss://dw-emr-demo/ods_raw_log_d/user_log_${bizdate}/';
说明 上述代码中的location为示例路径,需要输入您建立的文件夹的路径名称。
- 新建ods_user_info_d表。
- 查看数据同步结果。建表语句运行成功后,分别在两个EMR Hive节点中输入查询语句。说明 查询语句中的分区列需要更新为业务日期。例如,任务运行的日期为20191107,则业务日期为20191106,即任务运行日期的前一天。
- 查询ods_user_info_d表的数据。
SELECT * from ods_user_info_d where dt=业务日期; --业务日期为任务运行日期的前一天。
- 查询ods_raw_log_d表的数据。
SELECT * from ods_raw_log_d where dt=业务日期; --业务日期为任务运行日期的前一天。
- 查询ods_user_info_d表的数据。
后续步骤
现在,您已经学习了如何进行日志数据同步,完成数据的采集,您可以继续下一个教程。在该教程中,您将学习如何对采集的数据进行计算与分析。详情请参见加工数据。