简介
本教程通过使⽤数据湖构建(DLF)产品对于淘宝⽤户⾏为样例数据的剖析,介绍DLF产品的数据发现和数据摸索性能。教程内容包含:1. 服务开明:开明阿⾥云账号及DLF/OSS相干服务2. 样例数据集下载和导⼊:下载样例数据(csv⽂件),并上传⾄OSS3. DLF数据发现:使⽤DLF⾃动辨认⽂件Schema并创立元数据表4. DLF数据摸索:使⽤DLF数据摸索,对⽤户⾏为进⾏剖析,包含⽤户活跃度、漏⽃模型等
数据阐明
本次测试的数据集来⾃阿⾥云天池⽐赛中使⽤的淘宝⽤户⾏为数据集,为了提⾼性能,咱们做了⼀定的裁剪。数据集中以csv的格局存储了⽤户⾏为及商品样例数据。数据范畴:2014年12⽉1⽇ - 2014年12⽉7⽇数据格式:
开明DLF和OSS服务(如已开明,间接跳转⾄第⼆步)
1.1 登录阿⾥云账号,点击进⼊DLF控制台⻚⾯。
1.2 开明DLF及其依赖OSS服务,并实现受权。(如果已开明可间接跳过)
若之前未开通过DLF服务,会提醒⽤户开明服务。点击“开明服务”,进⼊服务开明⻚⾯。
开明服务后,返回DLF控制台⻚⾯。会提醒开明OSS服务,以及授予DLF拜访依赖数据源的权限。点击按 钮实现OSS开明及受权。回到DLF控制台⻚⾯,点击刷新查看状态。⻚⾯⾃动跳转⾄DLF控制台主⻚⾯。
1.3 开明实现后,进⼊DLF控制台主⻚:
在OSS中导⼊须要剖析的数据
2.1 点击链接,下载样例代码⾄本地磁盘。
解压后失去⽂件夹:user_behavior_data,蕴含item和user个⽂件夹,⾥⾯别离蕴含了各⾃的csv数据⽂ 件。本次剖析次要集中在user⽂件中,数据内容如下。
2.2 将⽂件上传⾄OSS 进⼊OSS控制台,上传⽂件使⽤已有的Bucket,或创立新的Bucket。
上传解压后的user_behavior_data⽂件夹。上传后⽬录构造如下所示,item和user为两个表的数据⽂件夹。
在DLF上抽取元数据
3.1 创立元数据表
DLF中元数据库能够了解为在关系型数据库中的Database,其下⼀级为Table。
在DLF控制台中,进⼊元数据库⻚⾯,创立元数据库。
填⼊数据库名称。并抉择方才存有⽤户⾏为剖析的
如下图所示,元数据库创立胜利。
3.2 发现OSS⽂件中的元数据表信息
进⼊DLF元数据抽取⻚⾯,点击“新建抽取工作”
填写数据源相干配置,点击下⼀步
抉择过程中须要⽤到的RAM⻆⾊,默认为开明阶段曾经受权的“AliyunDLFWorkFlowDefaultRole”。运⾏模式 抉择“⼿动执⾏”。抽取策略抉择“疾速模式”以最快的速度实现元数据发现。
核查信息后,点击“保留并⽴即执⾏”。
零碎会跳转到元数据抽取列表⻚⾯,新建的工作开始创立并⾃动运⾏。
约10秒后工作运⾏实现。约10秒后工作运⾏实现。⿏标移到状态栏的问号图标,会看到曾经胜利创立了两张元数据表。
点击浮层中的“元数据库”链接,可间接查看该库中相干的表信息。
点击浮层中的“元数据库”链接,可间接查看该库中相干的表信息。
点击表详情,查看并确认抽取进去的表构造是否合乎预期。
⾄此,咱们通过DLF⾃动发现数据湖CSV⽂件Schema的过程曾经实现。下⼀步咱们开始针对数据湖内的数 据做剖析。
⽤户⾏为数据分析
4.1 数据分析概述
在DLF控制台⻚⾯,点击菜单“数据摸索”-“Spark SQL”,进⼊数据摸索页面。
数据分析的过程次要分为三步:
- 预览并检查数据信息。
- 简略的数据荡涤。
- 进⾏⽤户活跃度、漏⽃模型和商品热度剖析。
4.2 预览并检查数据
在查问框输⼊下⾯的语句,查看⽂件中的数据信息。
-- 预览数据select * from `dlf_demo ` . ` user ` limit 10;select * from `dlf_demo ` . `item ` limit 10;-- ⽤户数 17970select COUNT(DISTINCT user_id) from `dlf_demo ` . ` user ` ;-- 商品数 422858select COUNT(DISTINCT item_id) from `dlf_demo ` . `item ` ;-- ⾏为记录数 746024select COUNT(*) from `dlf_demo ` . ` user ` ;
数据内容如下:
4.3 数据预处理
咱们对原始数据进⾏⼀定的解决,已提⾼数据的可读性,并提⾼剖析的性能。 将behavior_type批改成更好了解的字符串信息;将⽇志+工夫的格局打平到两个独自的列,再加上周信 息,便于别离做⽇期和⼩时级别的剖析;过滤掉不必要的字段。并将数据存⼊新表user_log,表格局为 Parquet,按⽇期分区。后续咱们会基于新表做⽤户⾏为剖析。
-- 数据转换 耗时约40秒-- 创立新表user_log,parquet格局,按⽇期分区 -- 导⼊数据,拆分⽇期和⼩时,并将behavoior转换成可读性更好的值 -- 1-click; 2-collect; 3-cart; 4-paycreate table `dlf_demo ` . ` user_log ` USING PARQUET PARTITIONED BY (date) as select user_id, item_id, CASE WHEN behavior_type = 1 THEN 'click' WHEN behavior_type = 2 THEN 'collect' WHEN behavior_type = 3 THEN 'cart' WHEN behavior_type = 4 THEN 'pay' END as behavior, item_category, time, date_format(time, 'yyyy-MM-dd') as date, date_format(time, 'H') as hour, date_format(time, 'u') as day_of_week from `dlf_demo ` . ` user ` ;-- 查看运⾏后的数据select * from `dlf_demo ` . ` user_log ` limit 10;
4.4 ⽤户⾏为剖析
⾸先,咱们基于漏⽃模型,对所有⽤户从点击到加购/珍藏到购买的转化状况。
-- 漏⽃剖析 耗时13秒
SELECT behavior, COUNT(*) AS total FROM `dlf_demo ` . ` user_log ` GROUP BY behavior ORDER BY total DESC
后果如下:
而后咱们⼀周内每天的⽤户⾏为做统计分析
-- ⽤户⾏为剖析 耗时 14秒SELECT date, day_of_weekCOUNT(DISTINCT(user_id)) as uv, SUM(CASE WHEN behavior = 'click' THEN 1 ELSE 0 END) AS click, SUM(CASE WHEN behavior = 'cart' THEN 1 ELSE 0 END) AS cart, SUM(CASE WHEN behavior = 'collect' THEN 1 ELSE 0 END) AS collect, SUM(CASE WHEN behavior = 'pay' THEN 1 ELSE 0 END) AS pay FROM `dlf_demo ` . ` user_log ` GROUP BY date, day_of_weekORDER BY date
剖析后果如下:(因为数据集通过裁剪,对于⼯作⽇和⾮⼯作⽇的后果有失真)
最初,咱们联合商品表,剖析出数据集中最受欢迎的是个商品品类
-- 销售最多的品类 耗时 1分10秒SELECT item.item_category, COUNT(*) AS timesFROM `dlf_demo ` . `item ` itemJOIN `dlf_demo ` . ` user_log ` logON item.item_id = log.item_idWHERE log.behavior= 'pay'GROUP BY item.item_categoryORDER BY times DESCLIMIT 10;
后果如下:
4.5 下载剖析后果
DLF提供将剖析后果以CSV⽂件的模式下载的性能,启⽤该性能须要提前设置剖析后果的保留门路(OSS 门路)。设置后,查问后果会被保留到该门路下。⽤户能够通过DLF⻚⾯上的“下载”按钮间接下载,也可 以间接通过OSS拜访和下载该⽂件。 通过点击⻚⾯上的“门路设置”按钮进⾏设置。
能够抉择已有⽂件夹或者新建⽂件夹。
4.6 保留SQL
通过点击“保留”按钮,能够将该次剖析⽤到的sql保留,后续能够间接在“已存查问”中关上做进⼀步的调⽤ 及批改。
总结
本⽂通过⼀个简略的淘宝⽤户⾏为剖析案例,介绍并实际了数据湖构建(DLF)产品的元数据发现和数据 摸索性能。
有任何问题,或心愿进⼀步探讨数据湖技术,欢送扫码加⼊数据湖技术群,关注数据湖技术圈。
参考
天池 淘宝⽤户⾏为数据集:https://tianchi.aliyun.com/da...
Spark SQL ⽇期类型转换:https://spark.apache.org/docs...
近期数据湖流动
2021年6月24日至7月2日工作日期间 实现该场景,即可支付polo衫一件。先到先得
支付地址:https://developer.aliyun.com/...