《Hadoop大数据原理与应用》课件4.课件-第11章华为P30手机评论画像分析(2020春).pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《Hadoop大数据原理与应用》课件4.课件-第11章华为P30手机评论画像分析(2020春).pptx》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hadoop大数据原理与应用 Hadoop 数据 原理 应用 课件 11 华为 P30 手机 评论 画像 分析 2020
- 资源描述:
-
1、第11章华为P30手机评论画像分析Hadoop大数据原理与应用西安电子科技大学出版社【知识与能力要求】第11章 华为P30手机评论画像分析 11.1 需求分析 11.2 项目设计 11.3 项目环境搭建 11.4 数据采集与预处理 11.5 使用Hive分析数据 11.6 数据可视化11.1 需求分析 用户画像即用户信息标签化,是通过收集与分析消费者社会属性、生活习惯、消费行为等主要信息数据后,完美地抽象出一个用户的商业全貌,可以看作是企业应用大数据技术的基本方式。针对京东商城华为P30手机前100页的评论数据,进行用户画像分析,并对结论进行可视化呈现,最终得出评论时间在工作日、周末的分布情况
2、,以及评论时间在春夏秋冬四季的分布情况。11.2 项目设计 对华为P30手机评论数据的用户画像分析。项目使用专业工具进行数据采集,使用Excel和Kettle进行数据预处理,采用HDFS存储预处理后的手机评论数据,并导入Hive数据仓库进行数据分析,最后使用Sprint Boot和ECharts技术将结论可视化呈现。研究目的数据采集与预处理数据存储数据分析与挖掘结论可视化呈现11.3 项目环境搭建 项目在Linux环境下完成,假设有3台机器,在3台机器上分别完成以下内容:(1)搭建Linux集群,配置静态IP、修改主机名、编辑域名映射。(2)安装和配置Java。(3)安装和配置SSH免密登录。
3、(4)部署全分布模式Hadoop集群。(5)在Hadoop主节点上安装MySQL数据库,设置Hive连接的账号和密码。(6)部署Hive,采用MySQL作为Metastore的数据库。(7)在Hadoop主节点上安装Eclipse。(8)在Windows或Linux下安装Excel、ETL工具Kettle。11.4 数据采集与预处理11.4.1 去除无关数据列11.4.2 数据变换11.4.3 数据集成与清洗11.4.1 去除无关数据列 使用Excel去除多余无关数据列,得到的手机评论数据。11.4.2 数据变换 用户评论时间修改为数字类型,目的是方便利用Hive中的函数做时间运算。1.使用K
4、ettle新建转换 打开Kettle的Spoon图形界面工具,设计一个转换(Transfor-mation),选择“CSV文件输入”、“字段选择”、“JavaScript代码”和“Excel输出”4个组件,在每个组件上单击后,按住“Shift”按键拉出一根线到下一个组件,使各个组件数据连通。使用Spoon设计转换11.4.2 数据变换 2.设计“CSV文件输入”进入窗口【CSV文件输入】,执行如下操作:(1)为防止数据出现乱码,将文件编码设置为UTF-8。(2)首先单击按钮获取字段,会获取文件头部的列名,然后单击按钮预览,进行查看数据11.4.2 数据变换 3.设计“字段选择”进入窗口【选择/
5、改名值】。将字段“时间”改为英文字符如“time”,修改字段名称主要是因为JavaScript中汉字不能作为参数进行处理。11.4.2 数据变换 4.编写JavaScript代码 进入窗口【JavaScript代码】。在选项卡【Script 1】中,写入以下两行代码:var data1=time;var time1=time.getTime()/1000;其中,time.getTime()是将“yyyy-MM-dd HH:mm”的格式转化成数字类型并精确到毫秒,然后将得到的毫秒数值除以1000得到秒。11.4.2 数据变换 5.设计“Excel输出”进入窗口【Excel输出】,执行如下操作:(
6、1)在选项卡【文件】中设置Excel文件的输出位置。11.4.2 数据变换 5.设计“Excel输出”(2)在选项卡【字段】中,单击按钮获取字段,删除不需要的字段,编者只保留了两个字段:原始数据格式的字段和处理后的字段,目的是方便对比。11.4.3 数据集成与清洗 数据集成与清洗的操作步骤如下:(1)用Excel打开文件jd.csv,将文件中字段“时间”的值替换为上文产生的数字格式时间“time1”的值。(2)删除无关字段。(3)手工添加ID,在第一列插入递增数字,作为每一行数据的唯一标识。(4)将此文件另存为“jd_1.csv”,另存文件时将其编码设置为UTF-8。如果不采用字符编码UTF-
7、8,数据上传至HDFS后查看时会出现乱码现象。(5)使用记事本打开文件“jd_1.csv”,我们会发现文件内容中存在“.”形式的数据(6)使用文本文件自带的“替换”功能将“.”替换为“.”。jd_1.csv文件中数据之间的分隔符是Tab,如果不将多余的Tab删除,读取文件时会出现错误,造成数据不准确。最后将该文件重新重命名为jd.csv。11.5 使用Hive分析数据11.5.1 上传评论数据至HDFS11.5.2 在Hive中创建用户评论表并载入数据11.5.3 根据用户评论时间创建各种表11.5.4 创建评论画像表11.5.1 上传评论数据至HDFS将文件jd.csv上传至HDFS的目录/
8、data/jd下,按照以下步骤完成。(1)创建HDFS目录/data和/data/jd,使用的命令如下所示。hadoop fs-mkdir-p/data/jd(2)将文件jd.csv上传至HDFS的目录/data/jd下,使用的命令如下所示。hadoop fs-put jd.csv/data/jd(3)查看是否上传成功,使用的命令如下所示。hadoop fs-ls/data/jd11.5.2 在Hive中创建用户评论表并载入数据(1)创建用户评论表comments,其HiveQL语句如下所示。create external table comments(uid int,member strin
9、g,level string,comments string,datetime int,thumbsup string,commentnum string,attribute string)partitioned by(date_id string)row format delimited fields terminated by t;11.5.2 在Hive中创建用户评论表并载入数据(2)载入数据到comments,其HiveQL语句如下所示。ALTER TABLE comments DROP IF EXISTS PARTITION(date_id=jd);ALTER TABLE comme
10、nts ADD PARTITION(date_id=jd)LOCATION hdfs:/master:8020/data/jd;(3)可以使用HiveQL语句查看分区内的数据,例如语句:select*from comments where date_id=20190618;该项目中所用函数说明(部分)函数说明from_unixtime(unix_timestamp,format)把时间戳格式时间转化为年月日时分秒格式时间,参数要求为整数且单位为秒datediff(string enddate,string startdate)返回两个时间参数的相差天数pmod(int a,int b)pmod
11、(double a,double b)正取余函数,返回a除以b的余数的正值concat_ws(separator,string1,string2,.)特殊形式的concat(),分隔符将被加到被连接的字符串之间,如果分隔符是NULL,返回值也将为NULL;只要有一个字符串不是NULL,就不会返回NULL该项目中所用函数说明(部分)在Hive原生版本中,目前并没有返回星期几的函数,为了解决这个问题,除了利用Java自己编写UDF外,还可以利用现有Hive函数实现,例如语句:pmod(datediff(#date#,2012-01-01),7)其中,2012-01-01是星期日,该函数的返回值为“
12、0-6”,每个数字分别对应星期日至星期六。另外,对查出指定条件后的结果进行分组排名的方法有如下几种:(1)rank()over(partition),并列排名计数,如1、1、3。(2)dense_ rank()over(partition),并列排名不计数,如1、1、2。11.5.3 根据用户评论时间创建各种表1.创建评论工作日表根据用户评论的时间创建评论工作日表tb_a,判断是周末还是工作日。使用的具体HiveQL语句如下所示。create table if not exists tb_aasselect uid,case when weekday=0 or weekday=6 then w
13、eekend else Working days end as weekdayfrom(select uid,weekday,rank()over(partition by uid,weekday order by cnt desc)as rofrom(select uid,weekday,count(1)as cntfrom(select uid,pmod(datediff(from_unixtime(datatime),2012-01-01),7)as weekdayfrom commentswhere date_id=jd)tgroup by uid,weekday)t1)ttwhere
14、 ro=1;创建评论工作日表tb_a11.5.3 根据用户评论时间创建各种表 2.创建评论时间表 根据用户评论的时间创建评论时间表tb_b,将时间字段拆分为时间区间。使用的具体HiveQL语句如下所示。create table if not exists tb_basselect uid,stfrom(select uid,st,RANK()OVER(PARTITION BY uid,st ORDER BY cnt DESC)as rofrom(select uid,st,count(1)as cntfrom(select uid,case11.5.3 根据用户评论时间创建各种表when fr
15、om_unixtime(datatime,HH:MM)between 11:30 and 13:30 then 11:3013:30when from_unixtime(datatime,HH:MM)between 13:30 and 17:30 then 13:3017:30when from_unixtime(datatime,HH:MM)between 17:30 and 24:00 then 17:3024:00when from_unixtime(datatime,HH:MM)between 00:00 and 8:00 then 0:008:00when from_unixtime
16、(datatime,HH:MM)between 8:00 and 11:30 then 8:0011:30end stfrom comments as awhere a.date_id=jd)tgroup by uid,st)t1)ttwhere ro=1;创建评论时间表tb_b11.5.3 根据用户评论时间创建各种表3.创建评论季节表根据用户评论的时间创建评论季节表tb_c,统计用户评论的季节属性。使用的具体HiveQL语句如下所示。create table if not exists tb_casselect uid,concat_ws(|,collect_set(quanter)as q
展开阅读全文
链接地址:https://www.163wenku.com/p-8089518.html