EMR数据湖开发治理之用户画像分析-3

简介: EMR数据湖开发治理之用户画像分析-3

4. 加工数据

设计业务流程

  1. 双击新建的业务流程,打开业务流程编辑页面。
  2. 鼠标单击EMR Hive并拖拽至右侧的编辑页面。在新建节点对话框中,输入节点名称,单击提交

  1. 此处需要新建3个EMR Hive节点,依次命名为ods_log_info_ddw_user_info_dads_user_info_d,并配置如下图所示的依赖关系。业务流程节点间依赖关系的配置请参见步骤三中的新建业务流程。

2. 创建udf函数

  1. 在实验环境的chrome浏览器输入下方链接,下载ip2region-emr.jar存放至本地
https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/49126/cn_zh/1576723860673/ip2region-emr.jar

2. 新建资源

2.1 在DW中新建资源,类型选择EMR jar

2.2 存储路径选择准备工作中新建的OSS目录ip2Region,上传刚刚下载的资源,点击新建。

2.3 点击工具栏的提交按钮,将资源提交到生产环境。

3. 新建函数

3.1 DW中新建函数

3.2 弹窗中输入函数名字为getregion后,点击新建按钮

3.3 在弹出的页面上填写以下信息

参数

描述

EMR数据库

下拉选择步骤三创建的数据库或default数据库

所属资源

选择刚刚新建的资源,ip2region-emr.jar

类名

org.alidata.emr.udf.Ip2Region

函数类型

其它函数

注意:EMR数据库也可选择default;只需在配置EMR Hive节点的ods_log_info_d节点时,在节点代码中的getregion前加上前缀"default."。

3.4 单击工具栏的提交按钮,将udf函数提交到生产环境。

3. 配置EMR Hive节点

  1. 配置ods_log_info_d节点。
  2. 双击ods_log_info_d节点,进入节点配置页面。
  3. 在节点编辑页面,编写如下语句。

说明:如果您的工作空间绑定多个EMR引擎,需要选择EMR引擎。如果仅绑定一个EMR引擎,则无需选择。

如果新建函数时,EMR数据库选择了default,则需要在下面代码中的getregion前加上前缀"default."。

use workshopDB;
--创建ODS层表
CREATE TABLE IF NOT EXISTS ods_log_info_d (
  ip STRING COMMENT 'ip地址',
  uid STRING COMMENT '用户ID',
  `time` STRING COMMENT '时间yyyymmddhh:mi:ss',
  status STRING COMMENT '服务器返回状态码',
  bytes STRING COMMENT '返回给客户端的字节数',
  region STRING COMMENT '地域,根据ip得到',
  method STRING COMMENT 'http请求类型',
  url STRING COMMENT 'url',
  protocol STRING COMMENT 'http协议版本号',
  referer STRING COMMENT '来源url',
  device STRING COMMENT '终端类型 ',
  identity STRING COMMENT '访问类型 crawler feed user unknown'
)
PARTITIONED BY (
  dt STRING
);
ALTER TABLE ods_log_info_d ADD IF NOT EXISTS PARTITION (dt=${bizdate});
set hive.vectorized.execution.enabled = false;
INSERT OVERWRITE TABLE ods_log_info_d PARTITION (dt=${bizdate})
SELECT ip
  , uid
  , tm
  , status
  , bytes 
  , getregion(ip) AS region --使用自定义UDF通过ip得到地域。 
  , regexp_extract(request, '(^[^ ]+) .*') AS method --通过正则把request差分为三个字段。
  , regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') AS url
  , regexp_extract(request, '.* ([^ ]+$)') AS protocol 
  , regexp_extract(referer, '^[^/]+://([^/]+){1}') AS referer  --通过正则清洗refer,得到更精准的url。
  , CASE
    WHEN lower(agent) RLIKE 'android' THEN 'android' --通过agent得到终端信息和访问形式。
    WHEN lower(agent) RLIKE 'iphone' THEN 'iphone'
    WHEN lower(agent) RLIKE 'ipad' THEN 'ipad'
    WHEN lower(agent) RLIKE 'macintosh' THEN 'macintosh'
    WHEN lower(agent) RLIKE 'windows phone' THEN 'windows_phone'
    WHEN lower(agent) RLIKE 'windows' THEN 'windows_pc'
    ELSE 'unknown'
  END AS device
  , CASE
    WHEN lower(agent) RLIKE '(bot|spider|crawler|slurp)' THEN 'crawler'
    WHEN lower(agent) RLIKE 'feed'
    OR regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') RLIKE 'feed' THEN 'feed'
    WHEN lower(agent) NOT RLIKE '(bot|spider|crawler|feed|slurp)'
    AND agent RLIKE '^[Mozilla|Opera]'
    AND regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') NOT RLIKE 'feed' THEN 'user'
    ELSE 'unknown'
  END AS identity     ----------- 数据清洗,字段映射
  FROM (
    SELECT SPLIT(col, '##@@')[0] AS ip
    , SPLIT(col, '##@@')[1] AS uid
    , SPLIT(col, '##@@')[2] AS tm
    , SPLIT(col, '##@@')[3] AS request
    , SPLIT(col, '##@@')[4] AS status
    , SPLIT(col, '##@@')[5] AS bytes
    , SPLIT(col, '##@@')[6] AS referer
    , SPLIT(col, '##@@')[7] AS agent
    FROM ods_raw_log_d  ----------- 原始日志表中字段提取
  WHERE dt = ${bizdate}
) a;
  1. 单击工具栏中的

2. 配置dw_user_info_d节点。

  1. 双击dw_user_info_d节点,进入节点配置页面。
  2. 在节点编辑页面,编写如下语句。

说明:如果您的工作空间绑定多个EMR引擎,需要选择EMR引擎。如果仅绑定一个EMR引擎,则无需选择。

use workshopDB;
--创建DW层表
CREATE TABLE IF NOT EXISTS dw_user_info_d (
  uid STRING COMMENT '用户ID',
  gender STRING COMMENT '性别',
  age_range STRING COMMENT '年龄段',
  zodiac STRING COMMENT '星座',
  region STRING COMMENT '地域,根据ip得到',
  device STRING COMMENT '终端类型 ',
  identity STRING COMMENT '访问类型 crawler feed user unknown',
  method STRING COMMENT 'http请求类型',
  url STRING COMMENT 'url',
  referer STRING COMMENT '来源url',
  `time` STRING COMMENT '时间yyyymmddhh:mi:ss'
)
PARTITIONED BY (
  dt STRING
);
ALTER TABLE dw_user_info_d ADD IF NOT EXISTS PARTITION (dt = ${bizdate});
INSERT OVERWRITE TABLE dw_user_info_d PARTITION (dt=${bizdate})
SELECT COALESCE(a.uid, b.uid) AS uid
  , b.gender
  , b.age_range
  , b.zodiac
  , a.region
  , a.device
  , a.identity
  , a.method
  , a.url
  , a.referer
  , a.`time`
FROM (
  SELECT *
  FROM ods_log_info_d
  WHERE dt = ${bizdate}
) a
LEFT OUTER JOIN (
  SELECT *
  FROM ods_user_info_d
  WHERE dt = ${bizdate}
) b
ON a.uid = b.uid;
  1. 单击工具栏中的

3. 配置ads_user_info_d节点。

  1. 双击ads_user_info_d节点,进入节点配置页面。``
  2. 在节点编辑页面,编写如下语句。

说明:如果您的工作空间绑定多个EMR引擎,需要选择EMR引擎。如果仅绑定一个EMR引擎,则无需选择。

use workshopDB;
--创建ads层表
CREATE TABLE IF NOT EXISTS ads_user_info_d (
  uid STRING COMMENT '用户ID',
  region STRING COMMENT '地域,根据ip得到',
  device STRING COMMENT '终端类型 ',
  pv BIGINT COMMENT 'pv',
  gender STRING COMMENT '性别',
  age_range STRING COMMENT '年龄段',
  zodiac STRING COMMENT '星座'
)
PARTITIONED BY (
  dt STRING
);
ALTER TABLE ads_user_info_d ADD IF NOT EXISTS PARTITION (dt=${bizdate});
INSERT OVERWRITE TABLE ads_user_info_d PARTITION (dt=${bizdate})
SELECT uid
  , MAX(region)
  , MAX(device)
  , COUNT(0) AS pv
  , MAX(gender)
  , MAX(age_range)
  , MAX(zodiac)
FROM dw_user_info_d
WHERE dt = ${bizdate}
GROUP BY uid;
  1. 单击工具栏中的

4. 提交业务流程

  1. 给每个hive节点,新增日期参数。

单击右侧的调度配置,在面板的参数位置,添加bizdate参数配置。

  1. 在业务流程的编辑页面,单击,运行业务流程。
  2. 待业务流程中的所有节点后出现,单击,提交运行成功的业务流程。
  3. 选择提交对话框中需要提交的节点,此处全选即可。勾选忽略输入输出不一致的告警
  4. 单击确认。提交成功后,会出现以下提示。s

5. 在生产环境运行任务

  1. 任务发布成功后,单击页面上方的运维中心,进入运维中心页面。

  1. 单击左侧导航栏中的周期任务运维 > 周期任务,进入周期任务页面,单击workstart虚节点。
  2. 在右侧的DAG图中,右键单击workstart节点,选择补数据 > 当前节点及下游节点
  3. 输入业务日期(选择今天即可),勾选需要补数据的任务(全选即可),单击确定,自动跳转至补数据实例页面。
  4. 单击刷新,直至SQL任务全部运行成功即可产出数据。

恭喜您!到这里,您已经成功使用了EMR + DLF + OSS-HDFS + DataWorks这个产品组合。给自己点个赞吧~

如果你想体验更多产品能力,您可以继续进行实验,完成用户画像分析。

目录
相关文章
|
26天前
|
SQL 分布式计算 Serverless
EMR Serverless Spark:一站式全托管湖仓分析利器
本文根据2024云栖大会阿里云 EMR 团队负责人李钰(绝顶) 演讲实录整理而成
119 2
|
3月前
|
存储 分布式计算 监控
揭秘阿里云EMR:如何巧妙降低你的数据湖成本,让大数据不再昂贵?
【8月更文挑战第26天】阿里云EMR是一种高效的大数据处理服务,助力企业优化数据湖的成本效益。它提供弹性计算资源,支持根据需求调整规模;兼容并优化了Hadoop、Spark等开源工具,提升性能同时降低资源消耗。借助DataWorks及Data Lake Formation等工具,EMR简化了数据湖构建与管理流程,实现了数据的统一化治理。此外,EMR还支持OSS、Table Store等多种存储选项,并配备监控优化工具,确保数据处理流程高效稳定。通过这些措施,EMR帮助企业显著降低了数据处理和存储成本。
130 3
|
3月前
|
安全 数据管理 大数据
数据湖的未来已来:EMR DeltaLake携手阿里云DLF,重塑企业级数据处理格局
【8月更文挑战第26天】在大数据处理领域,阿里云EMR与DeltaLake的集成增强了数据处理能力。进一步结合阿里云DLF服务,实现了数据湖的一站式管理,自动化处理元数据及权限控制,简化管理流程。集成后的方案提升了数据安全性、可靠性和性能优化水平,让用户更专注业务价值。这一集成标志着数据湖技术向着自动化、安全和高效的未来迈出重要一步。
77 2
|
3月前
|
存储 大数据 数据处理
Delta Lake革新浪潮:EMR中的数据湖守护者,如何重塑大数据生态?
【8月更文挑战第26天】Delta Lake是一款开源大数据处理框架,以数据版本控制和ACID事务特性著称,在大数据领域崭露头角。在阿里云EMR平台上,它为用户提供高效可靠的数据处理方式,通过结构化的存储、事务日志实现数据版本控制和回滚。Delta Lake在EMR中实现了ACID事务,简化数据湖操作流程,支持时间旅行查询历史数据版本,优化存储格式提高读取速度,这些优势使其在开源社区和企业界获得广泛认可。
51 2
|
3月前
|
分布式计算 大数据 数据处理
【大数据管理新纪元】EMR Delta Lake 与 DLF 深度集成:解锁企业级数据湖的无限潜能!
【8月更文挑战第26天】随着大数据技术的发展,Apache Spark已成为处理大规模数据集的首选工具。亚马逊的EMR服务简化了Spark集群的搭建和运行流程。结合使用Delta Lake(提供ACID事务保证和数据版本控制)与DLF(加强数据访问控制及管理),可以显著提升数据湖的可靠性和性能。本文通过一个电商公司的具体案例展示了如何在EMR上部署集成Delta Lake和DLF的环境,以及这一集成方案带来的几大优势:增强的可靠性、细粒度访问控制、性能优化以及易于管理的特性。这为数据工程师提供了一个高效且灵活的数据湖平台,简化了数据湖的建设和维护工作。
60 1
|
3月前
|
存储 机器学习/深度学习 弹性计算
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
|
3月前
|
Java Spring 开发者
掌握Spring事务管理,打造无缝数据交互——实用技巧大公开!
【8月更文挑战第31天】在企业应用开发中,确保数据一致性和完整性至关重要。Spring框架提供了强大的事务管理机制,包括`@Transactional`注解和编程式事务管理,简化了事务处理。本文深入探讨Spring事务管理的基础知识与高级技巧,涵盖隔离级别、传播行为、超时时间等设置,并介绍如何使用`TransactionTemplate`和`PlatformTransactionManager`进行编程式事务管理。通过合理设计事务范围和选择合适的隔离级别,可以显著提高应用的稳定性和性能。掌握这些技巧,有助于开发者更好地应对复杂业务需求,提升应用质量和可靠性。
46 0
|
3月前
|
存储 缓存 数据管理
阿里云EMR数据湖文件系统问题之JindoFS数据孤岛的问题如何解决
阿里云EMR数据湖文件系统问题之JindoFS数据孤岛的问题如何解决
|
3月前
|
存储 对象存储 云计算
阿里云EMR数据湖文件系统问题之JindoFS处理大量小文件的问题如何解决
阿里云EMR数据湖文件系统问题之JindoFS处理大量小文件的问题如何解决
|
3月前
|
存储 对象存储
阿里云EMR数据湖文件系统问题之JindoFS的Snapshot实现的问题如何解决
阿里云EMR数据湖文件系统问题之JindoFS的Snapshot实现的问题如何解决