版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目4Hive数据仓库
任务4.1
任务4.2
任务4.3餐饮数据统计分析
【任务描述】
都市生活紧张忙碌,不少上班族已经习惯于在餐饮外卖平台上订餐,外卖平台的菜品种
类丰富,提供各式风味的美食。但是即便如此,由于个体的口味偏好及菜品质量的差异,上
班族们常常有不知道今天午餐应该吃什么的烦恼。
w餐饮外卖平台,向广大用户提供网上订餐服务,其市场占有量在近年不断增加。当用
户在W平台订餐完成后,平台会引导用户对于品尝过的菜品进行评价打分,最高为5分,
最低为1分。
为提高用户的购买体验,平台需要对用户的在平台上的打分数据、以及平台的相关菜品
数据进行统计分析,在后续的菜品推送时能有所依据。本小节通过平台收集的用户评分数据,
分析外卖平台的受欢迎度、客户的体验度。
【任务分析】
本小节将从如下的分析操作,分析外卖平台的受欢迎度、客户的体验度。
(1)根据用户评分数据统计日销用和日用户量。
(2)统计同时有评分和评分内容的记录。
(3)分析用户的评分分布情况。
(4)统计10大热销菜品。
(5)统计10大评分为5的热销菜品。
(6)统计单口评分超过2次的用户数。
(7)找出评分次数超过两次的用户中,每个用户评分最富的记录。
【任务实施】
4.3.1数据说明
因为业务数据的安全原因,用户评分数据集的数据已做了脱敏处理,只保留部分重要属
性,其各属性及说明如表4・1所示。
表4-1用户评分数据属性及其说明
属性名称属性说明
UserID用户ID
MeallD菜品ID
Rating评分
ReviewTime评分的时间戳
Review评价内容
另外,在网站的后台数据库(MySQL)中保存着菜品的数据集,其数据内容如图4-1所
示,导出后形成Parquet文件。
mealnomeallDmeal_name
1BOOOHOOVBQ口权
2B000H0X79O套保鸡丁
3BOOOH29TXU水煮牛肉
4BOOOH2DMMF番前茄饼
5BOOOH4YNMO球械
6BOOOHAB4NK蛋包饭
7B000HKWE3O鱼香茄子
8B000HZEHL6塔尖大白菜
9BOOOI5PVD8酸溜土豆丝
10B000I5Q0ZG茄汁萌饼
图4-1菜品数据集
在用户评分数据集中,保存了用户对菜品的评分信息,很大程度上反映了用户对菜品的
兴趣度,因此这份数据将作为统计分析的主要数据源.
4.3.2创建数据表并导入数据
将用户评分数据realrating.parquet和菜品数据meal」ist.txt上传至Linux系统的/opt目录
下,启动Hadoop集群、MySQL服务、MelaSlore服务,打开HiveCLL在命令行窗口进行
菜品数据表mealjist和用户评分数据表meal.rating的创建并导入相应数据,如代码4-1所
zjso
代码4”创建数据表并导入数据
createdatabasemeal;
usemeal;
-创建菜单表
createtabicmcal」i$l(
idint,
Mealldstring,
mealnamestring)
rowformatdelimitedfieldstenninatedby
一导入数据
loaddatalocalinpath'/opt/meaLlist.txt'overuriteintotablemeal_list;
--创建评分表
createtablemeal_rating(
useridstring,
mealidstring,
ratingdouble,
reviewstring,
revicwtimestring)
storedasparquet;
一导入数据
loaddatalocalinpath'/opt/mealrating.parquet'overwriteintotablemealrating;
导入数据后,可使用select语句查询前5行数据,险验一下,查询结果如图4-2所示。
hive>select*frommeal_listlimit5;
OK
1B000H0OVBQ口水码
2B00OHOX79O宫保海丁
3B000H29TXU水煮牛肉
4B00OH2DMME香煎茄饼
5B000H4YNM0五彩相取
Timetaken:0.737seconds.Fetched:5row(s)
hive>select*frommealratinglimit5;
OK
A2W0H395IHGS0TB0940HNZTVI5.0风味独特,真的不错!1496177056
A^?KHSf)VNONOHRRfia674RT7S?A有特色,也比较T生14Qfi1771fiR
A1YQ4Z5U9NIGPB09CDBTQCW5.0家常美味,推荐!1496177276
A3E5V5TSTAY3R9B09751IYQ44.0好吃1496179256
A1V50CTTDJ73ZMB09C0OLT6S5.0不得不赘1496180009
Timetaken:0.486seconds.Fetched:5row(s)
图4-2查询数据表前5行数据
4.3.3统计分析任务实现
根据用户评分数据,使用日期函数fisLunix山nc与CHSI实现日期格式的转换,在通过
聚合函数count,结合分组关键字groupby实现日销量和日用户量的统计,最后使用排序关
键字orderby对日期进行升序输出,如代码4-2所示。
代码4-2统计日销量和日用户量
selectymd,count(1)asdaycount,count(distinctuserid)asusercount
from(select*,from_unixtimc(cas((rcview(imeasbiginl),'yyyy-MM-dd')asymdfrommeal_rating)imp
groupbyymd
orderbyymd;
部分运行结果如图4-3所示,其中菜品日销量比日用户量普遍都高,意味着存在有部分
用户在一天内购买同一种菜品的现象。
2017-96-15491371
2017-96-16630466
2017-96-17577427
2017-96-18514393
2017-06-19560431
2017-96-20515378
2017-96-21733497
2017-96-22648446
2617-96-23669460
2017-96-24459326
2017-96-25664480
2017-96-26598427
2017-96-27575418
2017-96-281023733
2017-96-29716502
2017-96-303633
Timetaken:79.159seconds.Fetched:62row(s)
图4-3日销量和日用户量部分统计结果
通过使用聚合函数count,结合条件筛选关键字where,统计同时有评分和评分内容的
记录,如代码4-3所示。
代码4-3查询同时有评分和评分内容的记录
selectcount(*)frommealratingwherereviewisnotnullandratingisnotnull;
统计结果如图4-4所示,使用聚合函数count统计用户评分数据表meaLrating的总数据
量为38383,意味着用户评分数据表中的所有记录均有评分与评分内容。
38383
Timetaken36.655seconds.Fetched^1row(s)
图4-4查询同时有评分和评分内容的记录
使用聚合函数对用户评分数据表分析用户的评分分布情况,如代码4-4所示。
代码4-4创建手游被关注信息表
selectrating,coun((1),round(count(1)/38383*100,2)asusercountfrommeal_ratinggroupbyrating;
selectmax(rating)asmaxrating.min(rating)asminrating.round(avg(niting).3)asavgrating,
round(stcldev(rating),3)asstdratingfromineal_rating;
由图4-5可知,54.77%的用户在评分时都会打5分,其中打3分的用户超过90%;由图
4-6可知,用户评分的最大值为5分,最小值为1分,平均值为4.19分,标准差为LI18分,
说明了用户评分的数值数据较为集中,结合平均值为4.19分,可以推断,评分数值数据较
多为4、5分,即由图4-5所展示的情况。
1.017824.64
2.019605.11
3.0447511.66
4.0914223.82
5.02102454.77
Timetaken:30.697seconds,Fetched:5row(s)
图4-5用户评分分布情况1
0K
5.01.04.191.118
JTimetaken:35.019seconds.Fetched:1row(s)
图4-6用户评分分布情况2
使用分组关键字groupby对菜品ID进行分组,结合聚合函数count统计记录数,然后
使用排序关键字orderby降序输出10条数据,实现统计10大热销菜品,如代码4-5所示。
代码4-5统计10大热销菜品1
selectnicalid,counl(l)asmealcounlfrommealratinggroupbymealidorderbymcalcounldesclimit10;
运行结果如图4-7所示,第1列数据为菜品ID,第2列数据即为销售数据。
B00I3MPDP4467
BO0DAHSVYC460
B00I3MMN4I432
B00APEO0H4398
BOOCDBTQCW371
BO0I3MNGCG353
B0OI3MNVBW335
B00B8P3O9K325
B00I3MMTS8320
BO0CDBR1P6301
Timetaken:66.485seconds,Fetched:10row(s)
图4-710大热销菜品统计情况1
基十代码4-5的分析思路,使用联合关键字join,连接菜品数据表meal」ist,输出10大
热销菜品与其对应菜品名称,如代码4-6所示。
代码4-6统计10大热销菜品2
sclecla.mealid,a.mcalcoun(,b.mcalnumefrom(selectmcalid,coun((l)asmealcounlfrommcal_raiinggroupby
mealidorderbymealcountdes:limit10)ajoinmealjistbona.mealid=b.mealid;
运行结果如图4-8所示,第1列数据为菜品ID,第2列数据为销售数据,第3列数据
为对应的菜品名称。
0K
B00I3MPDP4467蟹柳蔬菜沙拉
B00DAHSVYC460香菜陈皮鹤
B0OI3MMN4I432红酒炖牛猜
B00APEG0H4398红苴南瓜米糊
B00CDBTQCW371素鱼煽苦瓜
B0OI3MNGCG353洋葱炒鸡蛋
B00I3MNVBW335懒人版红烧肉
B0OB8P8O9K325冬瓜茶
B0OI3MNTS8320烤猪颈肉
B00CDBR1P6301金银瓜条
Tim©taken:115.285seconds,Fetched:10row(s)
图4-810大热销菜品统计情况2
参考代码4-6的分析思路,实现统计10大评分为5的热销菜品,如代码4-7所示,运
行结果如图4-9所示。
代码4-7统计10大评分为5的热销菜品
selecta.mealid,a.mealcount,b.niealnainefrom(selectmealid,count(l)asmealcountfrommeal_ratingwhere
rating=5groupbymealidorderbymealcountdesclimit10)ajoinmealjistbona.mealid=b.mealid;
OK
BO0APE00H4289红豆南瓜米糊
B00I3MPDP4253鬟柳蔬菜沙拉
B009FZF0N0217高汤
B006Z48TZS215手撕茄子
BO04MWZLYC193藐菜烤鱼
B00B8P8O9K190冬瓜茶
BO0DAHSVYC177香菜陈皮日鸟
B00DT0YIIE174肉燕
B005544TRQ167X0音拌荷兰豆
B00F87ZUYG167大杏仁桃麻
Timetaken:128.263seconds,Fetched:10row(s)
图4-910大评分为5的热销菜品统计情况
为提高查询效率,创建一张视图mcal-rating-ymd,内容为用户评分数据表的所有数据
与进行了格式转换的日期;对创建好的视图使用聚合函数count,结合条件筛选关键字having,
实现统计单日评分超过2次的用户数,如代码4-8所示。
代码4-8统计单日评分超过2次的用户数
createviewmeal_raiing_ymdasselect*,from_unixiime(casi(reviewiimeasbigini),'yyyy-MM-dd)asymdfrom
meal_raling;
selectcount(distinctuserid)from(selectymd.userid,count(I)asratngcountfromnieal_rating_ymdgroupby
ymd,useridhavingratingcount>2)tnip;
运行结果如图4-10所示,总计2231名用户单日评分超过两次,结合用户评分数据表的
中数据量38383,单日评分超过两次的用户所占比例约为5.81%,数据较小,说明很少有用
户在一天内评分两次。
OK
2231
Tim。taken:72.408seconds.Fetched:1row(s)
图4-10统计单日评分超过2次的用户数情况
使用聚合函数count统计记录数,分析函数rank对通过over。子句划分的分区进行数据
排名,实现统计查询每个用户评分最高的记录,如代码4-9所示,运行结果如图4-10所示。
代码4・9统计每个用户评分最高的记录
select*,coun((l)over(partitionbyuserid)asratingcount,rank()over(partitionbyuseridorderbyratingdesc)as
ratingrankfrommeal_ratinglimit20;
OK
A0705654XT5UCAYOY7THB00IC9XG9O5.0简直太费了149549280081
A0705654XT5UCAYOY7THB00F406S2U3.0有特色,卫生149549280082
A0705654XT5UCAYOY7THB00H7NDSPC2.0基本0K149£08480083
A0705654XT5UCAYOY7THB06B2G2RG62.0基本0K149549280083
A0705654XT5UCAYOY7THB00IKT36S61.0还算不错149549280085
A0705654XT5UCAYOY7THB00F4PKH5E1.0还算不错149817120085
A0705654XT5UCAYOY7THB00BLCHYKU1.0一般般吧149471520085
A0705654XT5UCAYOY7THB60APE06UA1.0还算不错149362720085
A099898949AFP0GMFDCBB001Y5913C5.0简直太赞了149609760071
A0998989>19AFP0GMFDCBB00CeOLT6S5.0太美味了,衽烈推荐11^19817120071
A099898949AFP0GMFDCBB003YUGS6S5.0简直太费了149506680071
A099898949AFPOGMFDCBB005749LXQ5.0太美味了,资烈推荐!149748600071
A099898949AFP0GMFDCBB00B2LCW8O5.0太美味了,强烈推荐!149817120071
A099898949AFPOGMFDCBB006NU7C485.0此味只应天上有!149708320071
A099898949AFP0GMFDCBB002QS5OQ41.0还算不错149627040077
A1004HZ4AR10UIBO05OHSOL65.0太美味了,强烈推荐!149523360061
A1004HZ4AR10UIB00BG2TX9A5.6太美味了,强烈推荐!149734240061
A1004HZ4AR10UIB00DBT2QZY5.0太美味了,强烈推荐!149523360061
A1004HZ4AR10UIB00EY8MCOO5.6太美味了,强烈推荐!149514720061
A1004HZ4AR10UIB00ESNDHQY5.0太美味了,强烈推荐!149514720061
Timetaken:79.212seconds.Fetched:2。row(s)
图4-11每个用户评分最高的记录统计情况
基于代码4-9的分析思路,使用条件筛选关键字where找出评分次数超过两次的用户
中,每个用户评分最高的记录,如代码4-10所示,部分运行结果如图4-12所示。
代码4-10在评分次数超过两次的用户中每个用户评分最高的记录
select*from(select*.count;1)over(partitionbyuserid)asratingcount,rank()overfpartitionbyuserid
orderbyratingdesc)asratingrankfrommeal_rating)tmpwhereratingcount>2andratingrank=l;
AZU6MIE3PA7MB005C4FD0Q5.0此味只应天上有!149863840051
AZV9BLVTYCRC1B00FDZ8S2O5.0太美味了,强烈推荐!149678880051
AZV9BLVTYCRC1B004U8LF7K5.0太美味了,强烈推荐!149678880051
AZV9BLVTYCRC1B0O574P75M5.0太美味了,强烈推荐!149471520051
AZV9BLVTYCRC1B00337ZGIS5.0筒亘太赘了149678880051
AZV9BLVTYCRC1B007427XS45.0太美味了,强烈推荐!149756640051
AZVLTNV02CNP7B00ATLJYL65.0简直太赞了149682400051
AZVLTNV02CNP7B00H7NDSPC5.0太美味了,强烈推荐!149817120051
AZVLTNV02CNP7B00I3MPDP45.0太美味了,强烈推荐!149523360051
AZVLTNV02CNP7B00APE1NZW5.0简直太赘了149682400051
AZWFKYXA6ZAV9B0091P6X2E5.0太美味了,强烈推荐!149812000061
AZWFKYXA6ZAV9B002NWNTLO5.0简直太提了149423200061
AZX26WCIS8CNEB00ICGZIKG5.0此味只应天上有!149436960071
AZX26WCI58CNEB0OJMJOWXG5.0太美味了,弓虽烈推荐!149851680071
AZX26WCIS8CNEB00IJNKQHM5.0太美味了,强烈推荐!149817120071
AZX26WCIS8CNEB003RRW3BC5.0太美味了,强烈推荐!149817120071
AZX8DJ3X10LD4BO08ZXSUO25.0太美味了,强烈推荐!149466400051
AZXS6P5QWNMLCB0O1EUKHRG5.0太美味了,强烈推荐!149509600051
AZXS6P5QWNMLCB000W4Z5ZO5.0太美味了,强烈推荐!149509600051
AZXS6P5QWNMLCB002QNBRYM5.0太美味了,强烈推荐!149509600051
AZXS6P5QWNMLCB002UXAEV05.0太美味了,强烈推荐!149466400051
AZXS6P5QWNMLCB0012H0DBG5.0太美味了,强烈推荐!149509600051
Timetaken:74.46seconds.Fetched:21989row(s)
图4-12在评分次数超过两次的用户中每个用户评分最高的记录
某于代码4-10的分析思路,找出评分次数超过两次的用户中,每个用户评分最高、时
间最近的一条记录,如代码4-11所示,部分运行结果如图4-13所示。
代码4-11在评分次数超过两次的用户中每个用户评分最高、时间最近的一条记录
select♦from(select*,count(1)over(partitionbyuserid)asratingcount.row_number()over(partitionby
useridorderbyratingdesc,cast(reviewtimeasbigint)desc)asratingrankfrommeal_rating)impwhere
ralingcount>2andratingrank=l;
5
AZJ6N3ZYS2CWQB00HD6RLBK太美味了,强烈推荐/p>
AZJDD7W9UUVG0B003NS007050此味只应天上有/p>
AZJOKE3Y0UCBCBO0H7NDSPC50太美味了,强烈推荐/p>
AZJRWV5IDX6BHB0O3N1DFUU50太美味了,强烈推荐!149812000051
AZLIQDH1JWCXNB00252MNV»Y50太美味了,强烈推荐!149544160051
AZP04WRQFEYN8B00JRSBG9U56太美味了,强烈推荐!149678880Q61
AZQJGDWARL3RRB0O337ZGIS50太美味了,强烈推荐!149670240061
AZQP4EIUUNEWDBO0ETRANIO50太美味了,强烈推荐/p>
AZR0M5TIZZW3WB0O4X2M3N850简直太赞了149742880061
AZRRMG7IIE3H1B0OD5P4GUC50简直太赞了149872480059
AZSZQXY81ZSM3BO0D6MQ6ZM50太美味了,强烈推荐/p>
AZT3AX3A4O809B000UU4IX050简直太赘了1498689600155
AZU0LWSMZTIISBO05PK5KPO50太美味了,强烈推荐/p>
AZU6MIE3PA7MB008BQG3RE50此味只应天上有/p>
AZV9BLVTYCRC1B0O7427XS450太美味了,强烈推荐/p>
AZVLTNV02CNP7B0GH7NDSPC50太美味了,强烈推荐/p>
AZWFKYXA6ZAV9B0O91P6X2E50太美味了,强烈推荐/p>
AZX26WCIS8CNEBO0JMJOWXG50太美味了,强烈推荐/p>
AZX8DJ3X10LD4BO08ZXSUO2太美味了,强烈推荐/p>
AZXS6P5QWNMLCB0012H0DBG太美味了,强烈推荐!1495096000
Timetaken:86.007seconds.5130row(s)
图4-13在评分次数超过两次的用户中每个用户评分最高、时间最近的一条记录
若是想保存代码4-11执行后的数据,可以基于代他4-11,先创建一张视图tmp,存储
数据,这样可以有效地提高查询数据的效率;然后使用insertoverwrite命令将视图tmp的所
有数据导出至Linux本地目录/opt/userrating下,如代码4-12所示。
代码4-12UseCountReducer.java
createviewtmpasselect*from(select*.count(1)over(partitionbyuserid)asratingcount.
row_number()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生物打印肝脏类器官的体外构建与功能评价
- 生物制品稳定性试验变更控制管理
- 生物制剂在重度嗜酸粒细胞性哮喘减停策略中的探索
- 生物制剂临床试验中特殊人群(儿童)给药方案
- 生物利用度提升的局部给药策略优化-1
- 酒店经理面试题库酒店管理与服务技巧
- 深度解析(2026)《GBT 19721.3-2017海洋预报和警报发布 第3部分:海冰预报和警报发布》(2026年)深度解析
- 深度解析(2026)《GBT 19493-2004环境污染防治设备术语》
- 深度解析(2026)《GBT 19444-2004硅片氧沉淀特性的测定 间隙氧含量减少法》
- 生成式AI辅助糖尿病个性化方案生成
- 零部件试装报告
- 中外石油文化智慧树知到期末考试答案章节答案2024年中国石油大学(华东)
- 回族做礼拜的念词集合6篇
- 地理信息安全在线培训考试系统题库
- 病理生理学案例复习题
- 大型船舶建造设施项目船坞及码头工程施工组织设计
- 张哲华鑫仔小品《警察和我》台词剧本手稿
- 城镇燃气供气设施运行管理规范DB12T 1111-2021
- GB/T 70.1-2008内六角圆柱头螺钉
- GB/T 5271.18-2008信息技术词汇第18部分:分布式数据处理
- GB/T 148-1997印刷、书写和绘图纸幅面尺寸
评论
0/150
提交评论