尚硅谷大数据项目《在线教育之离线数仓》笔记006

视频地址:尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili

目录

第11章 数仓开发之ADS层

P087

P088

P089

P090

P091

P092

P093

P094

P095

P096

P097

P098

P099

P100

P101

P102

P103

P104

P105

P106

P107

P108

P109

P110

P111


第11章 数仓开发之ADS层

P087

第11章 数仓开发之ADS层

11.1 流量主题

11.1.1 各来源流量统计

[atguigu@node001 ~]$ nohup /opt/module/hive/hive-3.1.2/bin/hive &

[atguigu@node001 ~]$ nohup /opt/module/hive/hive-3.1.2/bin/hive --service hiveserver2 &

[atguigu@node001 hadoop]$ cd /opt/module/hive/hive-3.1.2/
[atguigu@node001 hive-3.1.2]$ nohup bin/hive &
[1] 11485
[atguigu@node001 hive-3.1.2]$ nohup: 忽略输入并把输出追加到"nohup.out"[atguigu@node001 hive-3.1.2]$ nohup bin/hive --service hiveserver2 &
[2] 11626
[atguigu@node001 hive-3.1.2]$ nohup: 忽略输入并把输出追加到"nohup.out"
[atguigu@node001 hive-3.1.2]$ 
[atguigu@node001 ~]$ nohup /opt/module/hive/hive-3.1.2/bin/hive &
[1] 3815
[atguigu@node001 ~]$ nohup: 忽略输入并把输出追加到"nohup.out"[atguigu@node001 ~]$ 
[atguigu@node001 ~]$ jpsall
================ node001 ================
2848 NameNode
3634 JobHistoryServer
3014 DataNode
3815 RunJar
3933 Jps
3422 NodeManager
================ node002 ================
2113 NodeManager
2531 Jps
1989 ResourceManager
1783 DataNode
================ node003 ================
1908 SecondaryNameNode
2055 NodeManager
2270 Jps
1823 DataNode
[atguigu@node001 ~]$ 
[atguigu@node001 ~]$ nohup /opt/module/hive/hive-3.1.2/bin/hive --service hiveserver2 &
[2] 4038
[atguigu@node001 ~]$ nohup: 忽略输入并把输出追加到"nohup.out"[atguigu@node001 ~]$ 
[atguigu@node001 ~]$ jpsall
================ node001 ================
2848 NameNode
4225 Jps
3634 JobHistoryServer
4038 RunJar
3014 DataNode
3815 RunJar
3422 NodeManager
================ node002 ================
2113 NodeManager
1989 ResourceManager
1783 DataNode
2591 Jps
================ node003 ================
1908 SecondaryNameNode
2055 NodeManager
2334 Jps
1823 DataNode
[atguigu@node001 ~]$ 

P088

11.1.2 路径分析

桑基图

P089

11.1.3 各来源下单统计

P090

11.2 用户主题

11.2.1 用户变动统计

P091

11.2.2 用户留存率

P092

11.2.3 用户新增活跃统计

[2023-09-04 10:04:35] org.apache.hadoop.hive.ql.parse.SemanticException:Failed to get a spark session: org.apache.hadoop.hive.ql.metadata.HiveException: Failed to create Spark client for Spark session 1af1be50-bc68-46e3-a27f-ff9bf04c44c0

[atguigu@node001 ~]$ cd /opt/module/hive/hive-3.1.2/
[atguigu@node001 hive-3.1.2]$ bin/hivehive (default)> set hive.spark.client.server.connect.timeout=300000ms;
2023-09-04 10:14:03,044 INFO  [fd295ca1-5b9b-4f12-bcff-c5db47bee932 main] conf.HiveConf (HiveConf.java:getLogIdVar(5040)) - Using the default value passed in for log id: fd295ca1-5b9b-4f12-bcff-c5db47bee932
Query returned non-zero code: 1, cause: Cannot modify hive.spark.client.server.connect.timeout at runtime. It is in the list of parameters that can't be modified at runtime or is prefixed by a restricted variable
2023-09-04 10:14:03,091 INFO  [fd295ca1-5b9b-4f12-bcff-c5db47bee932 main] conf.HiveConf (HiveConf.java:getLogIdVar(5040)) - Using the default value passed in for log id: fd295ca1-5b9b-4f12-bcff-c5db47bee932
2023-09-04 10:14:03,091 INFO  [fd295ca1-5b9b-4f12-bcff-c5db47bee932 main] session.SessionState (SessionState.java:resetThreadName(452)) - Resetting thread name to  main
hive (default)> 
set hive.spark.client.server.connect.timeout=300000ms;

P093

11.2.4 用户行为漏斗分析

P094

11.2.5 新增交易用户统计

P095

11.2.6 各年龄段下单用户数

P096

11.3 商品主题

11.3.1 各分类课程交易统计

P097

11.3.3 各课程交易统计

P098

11.3.4 各课程评价统计

P099

11.3.5 各分类课程试听留存统计

P100

11.3.6 各学科试听留存统计

P101

11.4 交易主题

11.4.1 交易综合统计

11.4.2 各省份交易统计

P102

11.5 考试主题

11.5.1 各试卷平均统计

P103

11.5.2 各课程考试相关指标统计

P104

11.5.3 各试卷成绩分布

P105

11.5.4 各题正确率

P106

11.6 播放主题

11.6.1 各章节视频播放情况统计

P107

11.6.2 各课程视频播放情况统计

P108

11.7 完课主题

11.7.1 各课程完课人数统计

-- 11.7 完课主题
-- 11.7.1 各课程完课人数统计
-- 1)建表语句
DROP TABLE IF EXISTS ads_complete_complete_user_count_per_course;
CREATE EXTERNAL TABLE ads_complete_complete_user_count_per_course
(`dt`          STRING COMMENT '统计日期',`recent_days` BIGINT COMMENT '最近天数,1:最近1天,7:最近7天,30:最近30天',`course_id`   STRING COMMENT '课程 id',`user_count`  BIGINT COMMENT '完课人数'
) COMMENT '各课程完课人数'ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'LOCATION '/warehouse/edu/ads/ads_complete_complete_user_count_per_course/';-- 2)数据装载
-- 统计用户对应一个课程完成多少个章节
insert overwrite table edu2077.ads_complete_complete_user_count_per_course
select dt,recent_days,course_id,user_count
from edu2077.ads_complete_complete_user_count_per_course
union
select '2022-02-21'   dt,recent_days,course_id,count(user_id) order_count
from (select course_id,id,user_id,max_chapter_complete_datefrom (select course_id,user_id,max(first_complete_date)   max_chapter_complete_date,count(first_complete_date) user_chapter_complete_countfrom edu2077.dwd_learn_play_stats_fullwhere dt = '2022-02-21'group by course_id, user_id) chapter_completeleft join(select id,chapter_numfrom edu2077.dim_course_fullwhere dt = '2022-02-21') dim_courseon chapter_complete.course_id = dim_course.idwhere user_chapter_complete_count = chapter_num) course_completelateral view explode(array(1, 7, 30)) tmp as recent_days
where max_chapter_complete_date >= date_add('2022-02-21', -recent_days + 1)
group by recent_days, course_id;select * from ads_complete_complete_user_count_per_course;insert overwrite table edu2077.ads_complete_complete_user_count_per_course
select *
from edu2077.ads_complete_complete_user_count_per_course
union
select '2022-02-21'   dt,recent_days,course_id,count(user_id) user_conunt
from (-- 完整的用户数据select course_id,user_id,first_complete_datefrom (-- 统计用户对应一个课程完成多少个章节select course_id,user_id,max(first_complete_date)   first_complete_date,count(first_complete_date) user_complete_numsfrom dwd_learn_play_stats_fullwhere dt = '2022-02-21'group by course_id, user_id) t1left join (-- 统计课程一共有多少章节select id,chapter_numfrom dim_course_fullwhere dt = '2022-02-21') t2on t1.course_id = t2.id and user_complete_nums = chapter_num) t3 lateral view explode(array(1, 7, 30)) tmp as recent_days
where first_complete_date <= '2022-02-21'and first_complete_date >= date_sub('2022-02-21', recent_days - 1)
group by recent_days, course_id;select * from ads_complete_complete_user_count_per_course;

P109

11.7.2 完课综合指标

-- 11.7.2 完课综合指标
-- 1)建表语句
DROP TABLE IF EXISTS ads_complete_complete_stats;
CREATE EXTERNAL TABLE ads_complete_complete_stats
(`dt`                         STRING COMMENT '统计日期',`recent_days`                BIGINT COMMENT '最近天数,1:最近1天,7:最近7天,30:最近30天',`user_complete_count`        BIGINT COMMENT '完课人数',`user_course_complete_count` BIGINT COMMENT '完课人次'
) COMMENT '完课综合指标'ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'LOCATION '/warehouse/edu/ads/ads_complete_complete_stats/';-- 2)数据装载
insert overwrite table edu2077.ads_complete_complete_stats
select dt,recent_days,user_complete_count,user_course_complete_count
from edu2077.ads_complete_complete_stats
union
select '2022-02-21'            dt,recent_days,count(distinct user_id) user_complete_count,count(*)                user_course_complete_count
from (select course_id,id,user_id,max_chapter_complete_datefrom (select course_id,user_id,max(first_complete_date)   max_chapter_complete_date,count(first_complete_date) user_chapter_complete_countfrom edu2077.dwd_learn_play_stats_fullwhere dt = '2022-02-21'group by course_id, user_id) chapter_completeleft join(select id,chapter_numfrom edu2077.dim_course_fullwhere dt = '2022-02-21') dim_courseon chapter_complete.course_id = dim_course.idwhere user_chapter_complete_count = chapter_num) course_completelateral view explode(array(1, 7, 30)) tmp as recent_days
where max_chapter_complete_date >= date_add('2022-02-21', -recent_days + 1)
group by recent_days;select * from ads_complete_complete_stats;insert overwrite table edu2077.ads_complete_complete_stats
select dt,recent_days,user_complete_count,user_course_complete_count
from edu2077.ads_complete_complete_stats
union
select '2022-02-21'            dt,recent_days,count(distinct user_id) user_complete_count,count(*)                user_course_complete_count
from (-- 完整的用户数据select course_id,user_id,first_complete_datefrom (-- 统计用户对应一个课程完成多少个章节select course_id,user_id,max(first_complete_date)   first_complete_date,count(first_complete_date) user_complete_numsfrom dwd_learn_play_stats_fullwhere dt = '2022-02-21'group by course_id, user_id) t1left join (-- 统计课程一共有多少章节select id,chapter_numfrom dim_course_fullwhere dt = '2022-02-21') t2on t1.course_id = t2.id and user_complete_nums = chapter_num) t3 lateral view explode(array(1, 7, 30)) tmp as recent_days
where first_complete_date <= '2022-02-21'and first_complete_date >= date_sub('2022-02-21', recent_days - 1)
group by recent_days;select * from ads_complete_complete_stats;

P110

11.7.3 各个课程人均完成章节数

-- 11.7.3 各个课程人均完成章节数
-- 1)建表语句
DROP TABLE IF EXISTS ads_complete_complete_chapter_count_per_course;
CREATE EXTERNAL TABLE ads_complete_complete_chapter_count_per_course
(`dt`                     STRING COMMENT '统计日期',`recent_days`            BIGINT COMMENT '最近天数,1:最近1天,7:最近7天,30:最近30天',`course_id`              STRING COMMENT '课程 id',`complete_chapter_count` DECIMAL(16, 2) COMMENT '用户平均完成章节数'
) COMMENT '各课程人均完成章节视频数'ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'LOCATION '/warehouse/edu/ads/ads_complete_complete_chapter_count_per_course/';-- 2)数据装载
insert overwrite table edu2077.ads_complete_complete_chapter_count_per_course
select dt,recent_days,course_id,complete_chapter_count
from edu2077.ads_complete_complete_chapter_count_per_course
union
select '2022-02-21'                                         dt,recent_days,course_id,count(first_complete_date) / count(distinct user_id) complete_chapter_count
from edu2077.dwd_learn_play_stats_fulllateral view explode(array(1, 7, 30)) tmp as recent_days
where dt = '2022-02-21'and first_complete_date is not nulland first_complete_date >= date_add('2022-02-21', -recent_days + 1)
group by recent_days, course_id;select * from ads_complete_complete_chapter_count_per_course;insert overwrite table edu2077.ads_complete_complete_chapter_count_per_course
select *
from edu2077.ads_complete_complete_chapter_count_per_course
union
select '2022-02-21' dt,recent_days,course_id,cast(count(first_complete_date) / count(distinct user_id) as decimal(16, 2)) complete_chapter_count
from (-- 统计用户对应一个课程完成多少个章节-- 完成的章节数select user_id,course_id,max(first_complete_date)   first_complete_date,count(first_complete_date) user_complete_numsfrom dwd_learn_play_stats_fullwhere dt = '2022-02-21'group by user_id, course_id) t1 lateral view explode(array(1, 7, 30)) tmp as recent_days
group by recent_days, course_id;select * from ads_complete_complete_chapter_count_per_course;

P111

11.8 数据装载脚本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/98116.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Layer 2盛夏已至,StarkNet如何实现价值跃迁?

作者&#xff5c;Jason Jiang Layer 2概念在2023年夏天迎来爆发。Coinbase、ConsenSys等加密巨头纷纷下场&#xff0c;其部署的原生L2解决方案Base、Linea在过去两个月内相继完成主网上线&#xff1b;被誉为L2 四大天王之一的StarkNet也在夏天顺利完成“量子跃迁”升级&#x…

HDFS 架构剖析

目录 一、HDFS 架构整体概述 二、HDFS 集群角色介绍 2.1 整体概述 2.2 主角色&#xff1a;namenode 2.3 从角色&#xff1a;datanode 2.4 主角色辅助角色&#xff1a; secondarynamenode 三、HDFS 重要特性 3.1 主从架构 3.2 分块存储机制 3.3 副本机制 3.4 …

抖音视频删了怎么在电脑上找回来

【昨天整理电脑文件时&#xff0c;不小心将剪辑好的抖音作品误删了&#xff0c;但是回收站中找不回来了&#xff0c;这些视频是我花了很多心血制作的&#xff0c;如果没了真的十分可惜&#xff01;希望大家能帮帮我&#xff0c;告诉我应该如何恢复这些文件。】 现在人们都喜欢…

【日记】文章更新计划

有的时候博客内容会有变动&#xff0c;首发博客是最新的&#xff0c;其他博客地址可能会未同步,认准https://blog.zysicyj.top 更新日志 周更 【周一】 Kafka系列 【周二】 Nginx系列 【周三】 深入解读Redis系列 【周四】 设计模式系列 【周五】 深入理解MySQL系列 【周六】 微…

Java版本电子招标采购系统源码之传统采购模式面临的挑战

采购类型多 采购制度&#xff1a;采购金额、部门、品类的差异导致管理标准不同。 采购流程&#xff1a;从供应商管理、寻源操作到合同签订、订单执行&#xff0c;业务流程长&#xff0c;审批节点多&#xff0c;传统管理透明度低&#xff0c;联动性差。 供应商管理难 寻源&#…

华为OD机试 - TLV解析Ⅰ(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、Java算法源码五、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》。 …

Pycharm配置及使用Git教程

文章目录 1. 安装PyCharm2. 安装Git3. 在PyCharm中配置Git插件4. 连接远程Gtilab仓库5. Clone项目代码6. 将本地文件提交到远程仓库6.1 git add6.2 git commit6.3 git push6.4 git pull 平时习惯在windows下开发&#xff0c;但是我们又需要实时将远方仓库的代码clone到本地&…

【OpenCV实战】4.OpenCV 五种滤波使用实战(均值、盒状、中值、高斯、双边)

OpenCV 五种滤波使用实战(均值、盒状、中值、高斯、双边&#xff09; 〇、Coding实战内容一、滤波、核和卷积1.1 滤波1.2 核 & 滤波器1.3 公式1.4 例子 二、图片边界填充实战2.1 解决问题2.2 相关OpenCV函数2.3 Code 三. 均值滤波实战3.1 理论3.2 Blur3.3 Code 四. 盒状滤波…

Unity资源无法下载 反复提示需同意Terms of Service和EULA 同意后无效的解决方案

前言 最近在玩Unity&#xff0c;跟着tutorial做点项目&#xff0c;但是在下载免费资源时&#xff0c;只有从网站上点“打开Unity”&#xff0c;才能在本地Unity Editor的Package Manager里找到这个资源&#xff08;且点一下下面的刷新就没有了&#xff09;&#xff0c;并且点击…

HTML 播放器效果

效果图 实现代码 <!DOCTYPE HTML> <html><head><title>爱看动漫社区 | 首页 </title><link href"css/bootstrap.css" relstylesheet typetext/css /><!-- jQuery --><script src"js/jquery-1.11.0.min.js"…

羊城杯2023 部分wp

目录 D0nt pl4y g4m3!!!(php7.4.21源码泄露&pop链构造) Serpent(pickle反序列化&python提权) ArkNights(环境变量泄露) Ez_misc(win10sinpping_tools恢复) D0nt pl4y g4m3!!!(php7.4.21源码泄露&pop链构造) 访问/p0p.php 跳转到了游戏界面 应该是存在302跳转…

vue使用jsencrypt实现rsa前端加密

实现 RSA 加密 介绍 vue 完成 rsa 加密传输&#xff0c;jsencrypt 实现参数的前端加密 1 安装 jsencrypt npm install jsencrypt2 编写 jsencrypt.js 在 utils 文件夹中新建 jsencrypt.js 文件&#xff0c;内容如下&#xff1a;注意点&#xff1a;一般公钥都是后端生成好的&a…