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这个产品组合。给自己点个赞吧~

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

目录
相关文章
|
2月前
|
存储 缓存 安全
阿里云EMR数据湖文件系统: 面向开源和云打造下一代 HDFS
本文作者详细地介绍了阿里云EMR数据湖文件系统JindoFS的起源、发展迭代以及性能。
72356 79
|
2月前
|
存储 消息中间件 SQL
基于 Apache Hudi 构建分析型数据湖
基于 Apache Hudi 构建分析型数据湖
40 4
|
2月前
|
存储 SQL 算法
图加速数据湖分析-GeaFlow和Apache Hudi集成
图加速数据湖分析-GeaFlow和Apache Hudi集成
36 3
|
8月前
|
存储 数据采集 安全
什么是数据管理,数据治理,数据中心,数据中台,数据湖?
什么是数据管理,数据治理,数据中心,数据中台,数据湖?
207 0
|
10月前
|
存储 分布式计算 OLAP
深度干货|谈谈阿里云AnalyticDB Spark如何构建低成本数据湖分析
本文将分享AnalyticDB MySQL Spark助力构建低成本数据湖分析的最佳实践。
|
11月前
|
分布式计算 DataWorks 对象存储
全链路数据湖开发治理解决方案2.0重磅升级,全面增强数据入湖、调度和治理能力
阿里云全链路数据湖开发治理解决方案能力持续升级,发布2.0版本。解决方案包含开源大数据平台E-MapReduce(EMR) , 一站式大数据数据开发治理平台DataWorks ,数据湖构建DLF,对象存储OSS等核心产品。支持EMR新版数据湖DataLake集群(on ECS)、自定义集群(on ECS)、Spark集群(on ACK)三种形态,对接阿里云一站式大数据开发治理平台DataWorks,沉淀阿里巴巴十多年大数据建设方法论,为客户完成从入湖、建模、开发、调度、治理、安全等全链路数据湖开发治理能力,帮助客户提升数据的应用效率。
1361 1
|
10月前
|
SQL 弹性计算 分布式计算
使用EMR+DLF+OSS-HDFS进行数据湖分析
本实验通过使用EMR,搭建EMR集群,对OSS-HDFS进行数据湖分析
624 0
|
12月前
|
存储 SQL 分布式计算
图加速数据湖分析-GeaFlow和Hudi集成
本文主要分析了表模型的现状和问题,然后介绍了图模型在处理关系运算上的优势,接着介绍了图计算引擎GeaFlow和数据湖格式hudi的整合,利用图计算引擎加速数据湖上的关系运算.
图加速数据湖分析-GeaFlow和Hudi集成
|
12月前
|
SQL 机器学习/深度学习 存储
阿里云数据湖分析简介和购买流程
云原生数据湖分析(简称DLA)是新一代大数据解决方案,采取计算与存储完全分离的架构,支持数据库(RDS\PolarDB\NoSQL)与消息实时归档建仓,提供弹性的Spark与Presto,满足在线交互式查询、流处理、批处理、机器学习等诉求,也是传统Hadoop方案上云的有竞争力的解决方案。
|
存储 数据采集 分布式计算
数据湖架构的优势与挑战:数据存储和分析策略
随着大数据时代的到来,数据湖架构逐渐成为许多企业进行数据存储和分析的首选方案。数据湖是一种用于存储大量原始和结构化数据的中心化存储库。在本文中,我们将深入探讨数据湖架构的优势和挑战,并介绍一些常见的数据存储和分析策略。
374 0