2020 级课前测试试卷-电子商务大数据分析
石家庄铁道大学2023年春季
2020 级课前测试试卷-电子商务大数据分析
课程名称:大型数据库应用技术 任课教师:王建民 测试时间:2023.3.9
测试要求:
一、测试要求:
1、 数据采集(要求至少爬取三千条记录,时间跨度超过一星期):(10分)
要求Python 编写程序爬取京东手机的评论数据,生成Json形式的数据文件。
京东商城部分数据格式如下图所示:
- "productCommentSummary": {
- "goodRateShow": 95, //好评率
- "poorRateShow": 3, //差评率
- "poorCountStr": "1900+",
- "averageScore": 5, //平均分
- "generalCountStr": "1600+",
- "oneYear": 0,
- "showCount": 21000,
- "showCountStr": "2.1万+",
- "goodCount": 64000, //好评数
- "generalRate": 0.024,
- "generalCount": 1600, //中评数
- "skuId": 4432058,
- "goodCountStr": "6.4万+",
- "poorRate": 0.028,
- "afterCount": 2400,
- "goodRateStyle": 142,
- "poorCount": 1900, //差评数
- "skuIds": null,
- "poorRateStyle": 4,
- "generalRateStyle": 4,
- "commentCountStr": "6.8万+",
- "commentCount": 68000,
- "productId": 4432058, //商品id
- "afterCountStr": "2400+",
- "goodRate": 0.948,
- "generalRateShow": 2 //中评率
- },
comments中一条评论的结构:
- “id": 10432588299,
- “guid": "6c1d83b1-ac45-4189-a041-774eaff87df9",
- “content": "割手,相当的割手,无语了", //评论内容 √
- “creationTime": "2017-05-22 23:37:24", //写评论的时间 √
- “isTop": false, //是否置顶
- “referenceTime": "2017-05-20 18:35:11", //收货时间 √
- “firstCategory": 9987, //第一分类 √
- “secondCategory": 653, //第二分类 √
- “thirdCategory": 655, //第三分类 √
- “replyCount": 0,
- “score": 3, //打分 √
- “nickname": "j***柜", //昵称 √
- “userClient": 2,
- “productColor": "碳黑色",
- “productSize": "32GB",
- “userLevelName": "金牌会员", //会员级别 √
- “plusAvailable": 0,
- “productSales": [
- {
- "dim": 3,
- "saleName": "选择套装",
- "saleValue": "官方标配"
- }
- ,
- “userClientShow": "来自京东iPhone客户端",//评论设备
- “isMobile": true, //是否移动端
- “days": 2, //评论时间距【收货/下单】时间多长时间
- “afterDays": 0
爬虫程序:
2、数据预处理:要求使用MapReduce或者kettle实现源数据的预处理,对大量的Json文件,进行清洗,以得到结构化的文本文件。(10分)
(1)去除用户评论表的重复记录;
(2)按照清洗后的数据格式要求提取相应的数据字段。
清洗后的标准文本格式:
- "id": 10432588299,
- "guid": "6c1d83b1-ac45-4189-a041-774eaff87df9",
- "content": "割手,相当的割手,无语了", //评论内容 √
- "creationTime": "2017-05-22 23:37:24", //写评论的时间 √
- "isTop": false, //是否置顶
- "referenceTime": "2017-05-20 18:35:11", //收货时间 √
- "score": 3, //打分 √
- "nickname": "j***柜", //昵称 √
- "userLevelName": "金牌会员", //会员级别 √
- "userClientShow": "来自京东iPhone客户端",//评论设备
- "isMobile": true, //是否移动端
- "days": 2, //评论时间距【收货/下单】时间多长时间
清洗后的数据
3、 数据统计:生成Hive用户评论数据:(15分)
(1)在Hive创建一张表,用于存放清洗后的数据,表名为pinglun,字段名、字符类型、字段解释如下:
- productid string 产品ID
- commentcount int 评论数
- goodcount int 好评数
- generalcount int 中评数
- poorcount int 差评数
- goodrateshow float 好评率
- generalrateshow float 中评率
- poorrateshow float 差评率
- guid string 随机生成ID
- content string 评论内容
- creationtime string 写评论的时间
- score int 打分
- nickname string 昵称
- userlevelname string 会员级别
- userclientshow string 评论设备
- ismobile string 是否移动端
- days int 评论时间距【收货/下单】时间多长时间
需求1:分析用户使用移动端购买还是PC端购买,及移动端和PC端的用户比例,生成ismobilehive表,存储统计结果;
其中1代表移动端购买,共816人,0代表PC端购买,共174人。
需求2:分析用户评论周期(收到货后,一般多久进行评论),生成dayssql表,存储统计结果;
需求3:分析会员级别(判断购买此商品的用户级别),生成userlevelname_out表,存储统计结果;
需求4:分析每天评论量,生成creationtime_out表,存储统计结果;
需求5:日期格式标准化
功能为:去掉评论时间的时分秒,只保留年月日
4、 利用Sqoop进行数据迁移至Mysql数据库:(5分)
将上述五个表倒入到相对应的mysql数据表中。
sqoop export \--connect jdbc:mysql://192.168.52.21:3306/hive2 \--username root \--password 123456 \--table ismobilehive1 \--num-mappers 1 \--export-dir /user/hive/warehouse/ismobilehive2 \--input-fields-terminated-by ","
sqoop export \--connect jdbc:mysql://192.168.52.21:3306/hive2 \--username root \--password 123456 \--table dayssql1 \--num-mappers 1 \--export-dir /user/hive/warehouse/dayssql2 \--input-fields-terminated-by ","
sqoop export \--connect "jdbc:mysql://192.168.52.21:3306/for_hadoop?useUnicode=true&characterEncoding=utf-8" \--username root \--password 123456 \--table userlevelname_out1 \--num-mappers 1 \--export-dir /user/hive/warehouse/userlevelname_out2 \--input-fields-terminated-by ","
sqoop export \--connect jdbc:mysql://192.168.52.21:3306/hive2 \--username root \--password 123456 \--table creationtime_out1 \--num-mappers 1 \--export-dir /user/hive/warehouse/creationtme_out3 \--input-fields-terminated-by ","
5、 数据可视化:利用JavaWeb+Echarts完成数据图表展示过程(20分)
(实现前五步,获得60分)
需求1:把用户对京东进行评论时使用的是客户端还是移动端的统计数据,用饼图进行数据展示,从而达到让观者能从中熟悉某个项目与整个数据组间所存在的比例关系的目的。
需求2:把用户在收到货后,一般多久进行评论,即用户评论周期用柱状图展示,可以达到展现数据并将数据进行比较的目的。
需求3:将购买某商品的用户级别进行统计的结果数据用饼状图展示,从而可以展现用户级别的比例构成关系,让观者能从中熟悉某个级别的用户数量与所有购买用户所存在的比例关系。
需求4:将某件商品的每天的评论量的统计数据用折线图进行展现,可以展现出这个商品每天的评论量的变化趋势。