版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大数据技术与应用
第9章大数据应用目录01双11数据分析与预测02搜索数据分析与预测学习导读
在前面的章节中,详细介绍了Hadoop和Spark在大数据存储、计算、分析等方面的核心技术。本章将进入大数据应用的实战环节,通过“双11数据分析与预测”和“搜索数据分析与预测”这两个大型案例,展示大数据技术如何在真实场景中发挥作用,帮助企业进行高效决策和精准预测。通过本章的学习,读者将掌握大数据在电商、搜索引擎等领域的典型应用,理解Hadoop与Spark如何结合数据存储、计算、机器学习、可视化等技术,实现从数据获取到商业价值挖掘的完整流程。9.1双11数据分析与预测9.1双11数据分析与预测某电商双11交易数据回头客测试集test_rcustomers.csv用户行为日志文件user_log.csv回头客训练集train_rcustomers.csv9.1双11数据分析与预测用户行为日志user_log.csv中的字段定义如下。(1)user_id:买家id。(2)item_id:商品id。(3)cat_id:商品类别id。(4)merchant_id:卖家id。(5)brand_id:品牌id。(6)month:交易时间(月)。(7)day:交易时间(日)。(8)action:行为,取值范围{0,1,2,3},0表示点击,1表示加入购物车,2表示购买,3表示关注商品。9.1双11数据分析与预测用户行为日志user_log.csv中的字段定义如下。(9)age_range:买家年龄分段:1表示年龄<18,2表示年龄在[18,24],3表示年龄在[25,29],4表示年龄在[30,34],5表示年龄在[35,39],6表示年龄在[40,49],7和8表示年龄≥50,0和NULL则表示未知。(10)gender:性别:0表示女性,1表示男性,2和NULL表示未知。(11)province:收货地址(省份)。9.1双11数据分析与预测回头客训练集train_rcustomers.csv和回头客测试集test_rcustomers.csv拥有相同的字段,字段定义如下。(1)user_id:买家id。(2)age_range:买家年龄分段:1表示年龄<18,2表示年龄在[18,24],3表示年龄在[25,29],4表示年龄在[30,34],5表示年龄在[35,39],6表示年龄在[40,49],7和8表示年龄≥50,0和NULL则表示未知。(3)gender:性别:0表示女性,1表示男性,2和NULL表示未知。(4)merchant_id:卖家id。(5)label:是否是回头客,0表示不是回头客,1表示是回头客,-1表示该用户已经超出所需要考虑的预测范围。NULL只存在于测试集,在测试集中表示需要预测的值。9.1双11数据分析与预测1.上传数据将数据上传到Ubuntu的/analysis文件夹sudomkdir/analysissudochown-Rhadoop:hadoop/analysis//下面创建一个dataset目录,用于保存数据集sudomkdir/analysis/dataset//解压缩文件unzipdata.zip-d/analysis/datasetcd/analysis/dataset2.查看文件数据结构head-5user_log.csv9.1双11数据分析与预测3.数据集的预处理(1)删除文件第一行记录,即字段名称。user_log.csv的第一行都是字段名称,在文件中的数据导入数据仓库Hive中时,不需要第一行字段名称,因此,这里在做数据预处理时,删除第一行。(2)获取数据集中双11的前10000条数据。由于数据集中的交易数据太大,这里只截取数据集中在双11的前10
000条交易数据作为小数据集small_user_log.csv,该shell脚本与数据集在同一个目录下。4.导入数据库下面要把small_user_log.csv中的数据最终导入数据仓库Hive中。为了完成这个操作,首先把这个文件上传到分布式文件系统HDFS中,然后,在Hive中创建两个外部表,完成数据的导入。(1)在HDFS的根目录下面创建一个新的目录/analysis,并在这个目录下创建一个子目录dataset,命令如下。hdfsdfs-mkdir-p/analysis/dataset/user_log9.1双11数据分析与预测(2)在Hive上创建数据库。①
启动MySQL数据库,命令如下。servicemysqlstart#可以在Linux的任何目录下执行该命令②
启动Hive,命令如下。hive#Hive的环境变量已经配置在Ubuntu下启动成功以后,就进入了“hive>”命令提示符状态,可以输入类似SQL语句的HiveQL语句。③
在Hive中创建一个数据库analysis,命令如下。hive>createdatabaseanalysis;hive>useanalysis;④
创建外部表。要分别在数据库analysis中创建一个外部表user_log,它包含字段user_id、item_id、cat_id、merchant_id、brand_id、month、day、action、age_range、gender、province。在Hive命令提示符下输入如下命令。9.1双11数据分析与预测hive>CREATEEXTERNALTABLEanalysis.user_log(user_idINT,item_idINT,cat_idINT,merchant_idINT,brand_idINT,monthSTRING,daySTRING,actionINT,age_rangeINT,genderINT,provinceSTRING)COMMENT'Welcometoxmudblab,Nowcreateanalysis.user_log!'ROWFORMATDELIMITEDFIELDSTERMINATEDBY','STOREDASTEXTFILELOCATION'/analysis/dataset/user_log';⑤
查询数据。上面已经成功把HDFS中的“/analysis/dataset/user_log”目录下的small_user_log.csv数据加载到了数据仓库Hive中。现在可以使用以下命令进行查询。hive>select*fromuser_loglimit10;11.1双11数据分析与预测5.数据查询分析(1)查看日志前10个交易日志的商品品牌,Hive命令如下。hive>selectbrand_idfromuser_loglimit10;(2)查询前20个交易日志中购买商品时的时间和商品的种类,Hive命令如下。hive>selectmonth,day,cat_idfromuser_loglimit20;(3)有时在表中查询可以利用嵌套语句,如果列名太复杂可以设置该列的别名,以简化操作的难度。hive>selectul.at,ul.cifrom(selectactionasat,cat_idascifromuser_log)asullimit20;actionasat、cat_idasci就是为action设置别名at,为cat_id设置别名ci,from的括号里的内容也设置了别名ul,这样调用时用ul.at。ul.ci可以简化代码。9.1双11数据分析与预测6.查询条数统计分析(1)用聚合函数Count()计算出表内有多少条行数据,Hive命令如下。hive>selectcount(*)fromuser_log;#用聚合函数Count()计算出表内有多少条行数据(2)在函数内部加上distinct,查出不重复的数据有多少条,Hive命令如下。hive>selectcount(distinctuser_id)fromuser_log;#在函数内部加上distinct,查出user_id不重复的数据有多少条(3)查询不重复的数据有多少条,Hive命令如下。hive>selectcount(*)from(selectuser_id,item_id,cat_id,merchant_id,brand_id,month,day,actionfromuser_loggroupbyuser_id,item_id,cat_id,merchant_id,brand_id,month,day,actionhavingcount(*)=1)a;7.关键字条件查询分析(1)查询双11那天有多少人购买了商品,Hive命令如下。hive>selectcount(distinctuser_id)fromuser_logwhereaction='2';(2)取给定时间和给定品牌,求当天购买的此品牌商品的数量,Hive命令如下。hive>selectcount(*)fromuser_logwhereaction='2'andbrand_id=2661;9.1双11数据分析与预测8.用户行为分析(1)查询一件商品在某天的购买比例或浏览比例,Hive命令如下。hive>selectcount(distinctuser_id)fromuser_logwhereaction='2';#查询有多少用户在双11购买了商品hive>selectcount(distinctuser_id)fromuser_log;#查询有多少用户在双11点击了该店根据上面语句得到购买数量和单击数量,两个数相除即可得出当天该商品的购买率。(2)查询双11那天,男女买家购买商品的数量的比例,Hive命令如下。hive>selectcount(*)fromuser_logwheregender=0;#查询双11那天女性购买商品的数量hive>selectcount(*)fromuser_logwheregender=1;#查询双11那天男性购买商品的数量上面两条语句的结果相除,就得到了要求的比例。(3)给定购买商品的数量范围,查询某一天在该网站的购买数据量,Hive命令如下。hive>selectuser_idfromuser_logwhereaction='2'groupbyuser_idhavingcount(action='2')>5;#查询某一天在该网站购买商品超过5次的用户id9.1双11数据分析与预测9.用户实时查询分析查询不同品牌的浏览次数,Hive命令如下。hive>createtablescan(brand_idINT,scanINT)COMMENT'Thisisthesearchofbigdatataobao'ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t'STOREDASTEXTFILE;#创建新的数据表进行存储hive>insertoverwritetablescanselectbrand_id,count(action)fromuser_logwhereaction='2'groupbybrand_id;#导入数据hive>select*fromscan;#显示结果9.2搜索数据分析与预测9.1双11数据分析与预测要处理规模达500万条的搜索数据,可利用Hadoop平台实现高效的数据处理与计算,并将分析结果存储至HDFS分布式文件系统中,以保证数据的可靠存取与后续分析的可扩展性。数据格式说明:访问时间\t用户ID\t[查询词]\t该URL在返回结果中的排名\t用户单击的顺序号\t用户单击的URL。其中,用户ID是根据用户使用浏览器访问搜索引擎时的Cookie信息自动赋值的,即同一次使用浏览器输入的不同查询对应一个用户ID。1.将原始数据加载到HDFS平台上(1)先将文件上传到Linux环境下,命令如下。sudomkdir/analysis/search(2)查看文件内容,命令如下。lesssearch.500w.utf8(3)将原始数据加载到HDFS平台,命令如下。hdfsdfs-putsearch.500w.utf8/analysis/search9.1双11数据分析与预测2.将原始数据中的时间字段拆分并拼接,添加年、月、日、小时字段(1)编写脚本,将原始数据中的时间字段拆分并拼接,添加年、月、日、小时字段。命令如下。awk-F'\t''{print$0"\t"substr($1,0,4)"\t"substr($1,4,2)"\t"substr($1,6,2)"\t"substr($1,8,2)}'search.500w.utf8>search.500w.ext(2)执行脚本文件将原始数据中的时间字段拆分并拼接,添加年、月、日、小时字段。命令如下。vimlog-extend.shawk-F'\t''{print$0"\t"substr($1,0,4)"\t"substr($1,4,2)"\t"substr($1,6,2)"\t"substr($1,8,2)}'search.500w.utf8>search.500w.ext(3)查看修改后的文件内容,命令如下。lesssearch.500w.utf8.ext9.1双11数据分析与预测3.将处理后的数据加载到HDFS平台将处理后的数据加载到HDFS平台,命令如下。hdfsdfs-putsearch.500w.utf8.ext/analysis/search14.通过Hive实现(1)进入Hive,创建一个search数据库,Hive命令如下。hive>createdatabasesearch;(2)创建存放数据的表search_1,Hive命令如下。hive>createtablesearch_1(vtString,uidString,kwywordString,rankint,numberint,urlString,yearint,monthint,dayint,hourint)rowformatdelimitedfieldsterminatedby'\t'location'/user/search1';(3)查看表search_1的格式,Hive命令如下。hive>descsearch_1;9.1双11数据分析与预测5.数据统计(1)查询总条数,Hive命令如下。hive>selectcount(*)fromsearch_1;(2)查询非空查询条数,Hive命令如下。hive>selectcount(*)fromsearch_1wherekwywordisnotnullandkwyword!='';(3)查询无重复总条数,Hive命令如下。hive>selectcount(*)from(select*fromsearch_1groupbyvt,uid,kwyword,urlhavingcount(*)=1)a;(4)查询独立uid总数,Hive命令如下。hive>selectcount(distinct(uid))fromsearch_1;(5)查询频度排名(如频度最高的前50个词条),Hive命令如下。hive>selectkwyword,count(*)cntfromsearch_1groupbykwywordorderbycntdesclimit50;(6)查询次数大于2次的用户总数,Hive命令如下。hive>selectcount(a.uid)from(selectuid,count(*)cntfromsearch_1groupbyuidhavingcnt>2)a;(7)查询次数大于2次的用户占比。先查询uid的总次数,Hive命令如下。hive>selectcount(distinct(uid))fromsearch_1;再查询次数大于2的用户数,Hive命令如下。hive>selectcount(a.uid)from(selectuid,count(*)cntfromsearch_1groupbyuidhavingcnt>2)a;9.1双11数据分析与预测5.数据统计(7)查询次数大于2次的用户占比。先查询uid的总次数,Hive命令如下。hive>selectcount(distinct(uid))fromsearch_1;再查询次数大于2的用户数,Hive命令如下。hive>selectcount(a.uid)from(selectuid,count(*)cntfromsearch_1groupbyuidhavingcnt>2)a;所以查询次数大于2次的用户占比为:次数大于2的用户数/uid的总次数。(8)查询Rank在10以内的单击次数占比。先查询总的Rank次数,Hive命令如下。hive>selectcount(*)fromsearch_1;再查询Rank在10以内次数,Hive命令如下。hive>selectcount(*)fromsearch_1whererank<11;所以Rank在10以内的单击次数占比为:Rank在10以内次数/总的Rank次数。(9)查询直接输入URL查询的比例。先查询总的查询次数,Hive命令如下。hive>selectcount(*)fromsearch_1;再查询直接输入URL的查询次数,Hive命令如下。hive>selectcount(*)fromsearch_1wherekwywordlike'%www%';所以直接输入URL查询的比例是:直接输入URL的查询次数/总的查询次数。9.1双11数据分析与预测5.数据统计(10)查询搜索过“仙剑奇侠传”且搜索次数大于3次的uid,Hive命令如下。hive>selectuid,count(*)cntformsearch_1wherekwyword='仙剑奇侠传'groupbyuidhavingcnt>3;6.将上一步中每一步骤生成的结果保存到HDFS中先创建文件夹,命令如下。hdfsdfs-mkdir-p/analysis/results(1)将查询总条数的结果保存到HDFS上,Hive命令如下。hive>insertoverwritedirectory'/analysis/results/so1'selectcount(*)fromsearch_1;(2)将查询非空查询条数的结果保存到HDFS上,Hive命令如下。hive>insertoverwritedirectory'/analysis/results/so2'selectcount(*)fromsearch_1wherekwywordisnotnullandkwyword!='';9.1双11数据分析与预测(3)将查询无重复总条数的结果保存到HDFS上,Hive命令如下。hive>insertoverwritedirectory'/analysis/results/so3'selectcount(*)from(select*fromsearch_1groupbyvt,uid,kwyword,urlhavingcount(*)=1)a;(4)将查询独立uid总数的结果保存到HDFS上,Hive命令如下。hive>insertoverwritedirectory'/analysis/results/so4'selectcount(distinct(uid))fromsearch_1;(5)将查询频度排名(频度最高的前50个词条)的结果保存到HDFS上,Hive命令如下。hive>inse
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中枢神经系统感染监测指南
- 2026年成人高考经济与管理类财务管理真题单套试卷
- 2026年成人高考高起专语文(综合)冲刺单套试卷
- 浅析事业单位档案的规范化管理和优化策略
- COPD 患者呼吸困难的典型特征
- 2026年5月注册安全工程师执业资格考试案例分析单套试卷
- GE 德鲁克传感器:压力测量领域的卓越典范
- 造价工程师真题及答案
- 员工综合素质题目及答案
- spa泳池施工方案(3篇)
- 计算机系统结构曹强习题答案
- 安全工程毕业论文
- 第5课《大自然的语言》课件++2023-2024学年统编版八年级语文下册
- 有创血压测量操作评分标准
- 数据排序课件浙教版高中信息技术选修1
- 对外投资合作国别(地区)指南 -印度尼西亚-20230619-00348
- 《公共政策学-政策分析的理论方法和技术》重点解析讲述
- python课件第三章基本数据类型:数字类型及math库的应用
- GB/T 5782-2016六角头螺栓
- GB/T 5023.5-2008额定电压450/750 V及以下聚氯乙烯绝缘电缆第5部分:软电缆(软线)
- GB/T 34940.2-2017静态切换系统(STS)第2部分:电磁兼容性(EMC)要求
评论
0/150
提交评论