本项目旨在使用Spark对Yelp数据集进行分析,涵盖商户分析、用户分析、评论分析、评分分析和打卡分析等多个方面。通过对数据的处理和分析,挖掘出有价值的信息和趋势。
见语雀文档:https://www.yuque.com/blithy/ggxzz0?# 《大数据实训》 包含结果预览 需要配置VirtualBox虚拟机环境 导入HDP2.6.5虚拟机 使用Xftp将Yelp数据集导入到虚拟机中 解压数据集之后创建对应目录 导入原始数据集(.json) 在Hive中创建对应外部表 运行虚拟机 在Zeppelin Notebook中运行Code1-6代码进行数据分析和结果可视化 需要帮助请联系作者:Blithy@qq.com
Code1.py
:包含部分商户分析代码。Code2.py
:包含用户分析代码。Code3.py
:包含评论分析代码。Code4.py
:包含评分分析代码。Code5.py
:包含打卡分析代码。Code6.py
:包含综合分析代码。需求: 使用Spark&Hive对Yelp数据进行分析。
需求一:数据分析及可视化 一、商户分析 找出美国最常见商户(前20) 找出美国商户最多的前10个城市 找出美国商户最多的前5个州 找出美国最常见商户,并显示平均评分(前20) 统计评分最高的城市(前10) 统计category的数量 统计最多的category及数量(前10) 收获五星评论最多的商户(前20) 统计不同类型(中国菜、美式、墨西哥)的餐厅类型及数量 统计不同类型(中国菜、美式、墨西哥)的餐厅的评论数量 统计不同类型(中国菜、美式、墨西哥)的餐厅的评分分布 餐厅的category为:Restaurants
不同菜系的category分别为:American、Mexican、Italian、Japanese、Chinese、Thai、Mediterranean、French、Vietnamese、Greek、Indian、Korean、Hawaiian、African、Spanish、Middle_eastern。
二、用户分析 分析每年加入的用户数量 统计评论达人(review_count) 统计人气最高的用户(fans) 统计每年优质用户、普通用户比例 显示每年总用户数、沉默用户数(未写评论)的比例 统计出每年的新用户数、评论数、精英用户、tip数、打卡数. 列出结果表格 列出结果折线图 阐述你对结果的洞察分析 执行时间
三、评论分析 统计每年的评论数 统计有用(helpful)、有趣(funny)及酷(cool)的评论及数量 每年全部评论用户排行榜 从评论中提取最常见的Top20词语 提取全部评论、通过词性过滤(把 a/an/with这些没有意义的词过滤掉),并完成词云分析(Word Cloud) 计算单词的关系图(譬如chinese、steak等单词)
四、评分分析 统计评分的分布情况(1-5分) 统计评分周(周一~周天)次数统计 统计拥有次数最多的5分评价的商家
五、打卡分析 统计每年的打卡次数 统计24小时每小时打卡次数 统计最喜欢打卡的城市 全部商家的打卡排行榜
六、综合分析 为店家提供如何经营更成功的建议(譬如说30%更成功的商家提供了叫醒服务,是否WIFI、停车位(Parking)及信用卡支付(Credit Card)以及地域等等等等),用大数据技术从多方面进行可视化分析及阐述; 给定一个用户,为用户推荐潜在的好友及推荐度; 用户画像,取几个典型用户,从好友、评论、加入年份、点评记录等维度进行画像分析和阐述。(举个栗子:用户王老五,喜欢中国菜,生活在芝加哥,言辞犀利,低评制造者、评论达人、口头禅、粉丝超多等)
Yelp简介 Yelp是美国著名商户点评网站,创立于2004年,囊括各地餐馆、购物中心、酒店、旅游等领域的商户,用户可以在Yelp网站中给商户打分,提交评论,交流购物体验等。在Yelp中搜索一个餐厅或者旅馆,能看到它的简要介绍以及网友的点论,点评者还会给出多少星级的评价,通常点评者都是亲身体验过该商户服务的消费者,评论大多形象细致。
Yelp Reviews Yelp Reviews是Yelp为了学习目的而发布的一个开源数据集。它包含了由数百万用户评论,商业属性和来自多个大都市地区的超过20万张照片。这是一个常用的全球NLP挑战数据集,包含5,200,000条评论,174,000条商业属性。 数据集下载地址为:https://www.yelp.com/dataset/download
Yelp Reviews格式分为JSON格式,稍后我们会介绍如何处理这部分数据
Yelp JSON文件说明 users 用户表(yelp_academic_dataset_user.json) user_id string 22 character unique user id, maps to the user in user.json name string the user's first name review_count integer the number of reviews they've written yelping_since string when the user joined Yelp, formatted like YYYY-MM-DD 注册时间 friends array array of strings, an array of the user's friend as user_ids useful integer number of useful votes sent by the user funny integer number of funny votes sent by the user cool integer number of cool votes sent by the user fans integer number of fans the user has 粉丝 elite array the years the user was elite 优质用户 average_stars float average rating of all reviews 平均评分 compliment_hot integer number of hot compliments received by the user 点赞 compliment_more integer number of more compliments received by the user compliment_profile integer number of profile compliments received by the user compliment_cute integer number of cute compliments received by the user compliment_list integer number of list compliments received by the user compliment_note integer number of note compliments received by the user compliment_plain integer number of plain compliments received by the user compliment_cool integer number of cool compliments received by the user compliment_funny integer number of funny compliments received by the user compliment_writer integer number of writer compliments received by the user compliment_photos integer number of photo compliments received by the user business表(yelp_academic_dataset_business.json) business_id string 22 character unique string business id name string the business's name address string the full address of the business city string the city state string 2 character state code, if applicable postal code string the postal code latitude float latitude longitude float longitude stars float star rating, rounded to half-stars 平均评分 review_count integer number of reviews is_open integer 0 or 1 for closed or open, respectively attributes object business attributes to values. note: some attribute values might be objects 属性、设施 categories array an array of strings of business categories 类别 hours object an object of key day to value hours, hours are using a 24hr clock 开门时间 review表(yelp_academic_dataset_review.json) review_id string 22 character unique review id user_id string 22 character unique user id, maps to the user in user.json business_id string 22 character business id, maps to business in business.json stars integer star rating date string date formatted YYYY-MM-DD text string the review itself useful integer number of useful votes received funny integer number of funny votes received cool integer number of cool votes received checkin表(yelp_academic_dataset_checkin.json) business_id string 22 character business id, maps to business in business.json date string "2016-04-26 19:49:16, 2016-08-30 18:36:57, 2016-10-15 02:45:18, 2016-11-18 01:54:50, 2017-04-20 18:39:06, 2017-05-03 17:58:02"
在Hive中创建外部表 创建business 外部表并解析数据
CREATE EXTERNAL TABLE json_business ( json_body string ) stored AS textfile LOCATION '/user/root/yelp/business';
CREATE TABLE business ( business_id string, name string, address string, city string, state string, postal_code string, latitude float, longitude float, stars float, review_count int, is_open tinyint, attributes string, categories string, hours string );
FROM json_business INSERT OVERWRITE TABLE business SELECT get_json_object(json_body, '$.business_id'), get_json_object(json_body, '$.name'), get_json_object(json_body, '$.address'), get_json_object(json_body, '$.city'), get_json_object(json_body, '$.state'), get_json_object(json_body, '$.postal_code'), get_json_object(json_body, '$.latitude'), get_json_object(json_body, '$.longitude'), get_json_object(json_body, '$.stars'), get_json_object(json_body, '$.review_count'), get_json_object(json_body, '$.is_open'), cast(get_json_object(json_body, '$.attributes') AS string), get_json_object(json_body, '$.categories'), get_json_object(json_body, '$.hours'); 4. 创建review 外部表并解析数据
create external table json_review ( json_body string ) stored as textfile location '/user/root/yelp/review';
CREATE TABLE review ( review_id string, rev_user_id string, rev_business_id string, rev_stars int, rev_useful int, rev_funny int, rev_cool int, rev_text string, rev_timestamp string, rev_date date );
FROM json_review INSERT OVERWRITE TABLE review SELECT get_json_object(json_body, '$.review_id'), get_json_object(json_body, '$.user_id'), get_json_object(json_body, '$.business_id'), get_json_object(json_body, '$.stars'), get_json_object(json_body, '$.useful'), get_json_object(json_body, '$.funny'), get_json_object(json_body, '$.cool'), regexp_replace(regexp_replace(get_json_object(json_body, '$.text'), '\n', ' '), '\r', ' '), get_json_object(json_body, '$.date'), cast(substr(get_json_object(json_body, '$.date'), 0, 10) as date); 5. 创建user 外部表并解析数据
create external table json_user ( json_body string ) stored as textfile location '/user/root/yelp/user';
CREATE TABLE users ( user_id string, user_name string, user_review_count int, user_yelping_since string, user_friends string, user_useful int, user_funny int, user_cool int, user_fans int, user_elite string, user_average_stars float, user_compliment_hot int, user_compliment_more int, user_compliment_profile int, user_compliment_cute int, user_compliment_list int, user_compliment_note int, user_compliment_plain int, user_compliment_cool int, user_compliment_funny int, user_compliment_writer int, user_compliment_photos int );
FROM json_user INSERT OVERWRITE TABLE users SELECT get_json_object(json_body, '$.user_id'), get_json_object(json_body, '$.name'), get_json_object(json_body, '$.review_count'), get_json_object(json_body, '$.yelping_since'), get_json_object(json_body, '$.friends'), get_json_object(json_body, '$.useful'), get_json_object(json_body, '$.funny'), get_json_object(json_body, '$.cool'), get_json_object(json_body, '$.fans'), get_json_object(json_body, '$.elite'), get_json_object(json_body, '$.average_stars'), get_json_object(json_body, '$.compliment_hot'), get_json_object(json_body, '$.compliment_more'), get_json_object(json_body, '$.compliment_profile'), get_json_object(json_body, '$.compliment_cute'), get_json_object(json_body, '$.compliment_list'), get_json_object(json_body, '$.compliment_note'), get_json_object(json_body, '$.compliment_plain'), get_json_object(json_body, '$.compliment_cool'), get_json_object(json_body, '$.compliment_funny'), get_json_object(json_body, '$.compliment_writer'), get_json_object(json_body, '$.compliment_photos'); 6. 创建check in 外部表并解析数据
create external table json_checkin ( json_body string ) stored as textfile location '/user/root/yelp/checkin';
CREATE TABLE checkin ( business_id string, checkin_dates string );
FROM json_checkin INSERT OVERWRITE TABLE checkin SELECT get_json_object(json_body, '$.business_id'), get_json_object(json_body, '$.date');
欢迎提交Issue和Pull Request来贡献代码。
本项目采用MIT许可证,详情请参阅LICENSE文件。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。