Yelp大数据分析并用zeppelin实现可视化

本文详细描述了一次基于Yelp商户数据的实训项目,涉及数据源获取、Hadoop生态(HDFS、YARN、HIVE)使用、Pyspark编程,以及对商户和评论的深度分析,包括可视化图表如词云和关系图,为餐饮商家经营提供了策略建议。
摘要由CSDN通过智能技术生成

一、项目前言

Yelp是美国著名商户点评网站,创立于2004年,囊括各地餐馆、购物中心、酒店、旅游等领域的商户,用户可以在Yelp网站中给商户打分,提交评论,交流购物体验等。在Yelp中搜索一个餐厅或者旅馆,能看到它的简要介绍以及网友的点论,点评者还会给出多少星级的评价,通常点评者都是亲身体验过该商户服务的消费者,评论大多形象细致。因此对其数据进行分析与可视化。

该项目基于一次实训做出的大数据分析,因此以下内容主要为了记录与介绍我所完成的工作内容。

二、数据源

下载地址:Yelp Dataset

三、数据源文件说明

3.1 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

开门时间

3.2 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

四、使用的平台及语言

主要使用了Ambari管理Hadoop集群,其中HDFS实现分布式存储,YARN提供计算,HIVE建表,zeppelin实现可视化。部分功能比如生成词云、关系图这些zeppelin无法实现(主要是zeppelin导入不了外部依赖,我在网上查了很久也没有找到解决办法)因此转移到了pycharm中实现。

 语言是使用的pyspark。

五、项目功能实现

5.1 准备数据创建HIVE表

这里先用了xshell中的xftp来把下载好的文件传入hdfs中以便于建表。

上传数据完成后我们就可以开始创建HIVE表进行大数据分析:

5.1.1 创建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');

5.1.2 创建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.2 Zeppelin实现可视化数据分析

5.2.1 商户分析

5.2.1.1 找出美国最常见商户(前20)

5.2.1.2 找出美国商户最多的前10个城市

5.2.1.3 找出美国商户最多的前5个州

5.2.1.4 找出美国最常见商户,并显示平均评分(前20)

5.2.1.5 统计评分最高的城市(前10)

5.2.1.6 统计category的数量

5.2.1.7统计最多的category及数量(前10)

5.2.1.8 收获五星评论最多的商户(前20)

5.2.1.9 统计不同类型(中国菜、美式、墨西哥)的餐厅类型及数量

5.2.1.10 统计不同类型(中国菜、美式、墨西哥)的餐厅的评论数量

5.2.1.11 统计不同类型(中国菜、美式、墨西哥)的餐厅的评分分布

5.2.2 评论分析

5.2.2.1 统计每年的评论数

5.2.2.2 统计有用(helpful)、有趣(funny)及酷(cool)的评论及数量

5.2.2.3 每年全部评论用户排行榜

5.2.2.4 从评论中提取最常见的Top20词语

5.2.2.5 计算单词的关系图

这部分我选取了cheese这个单词,是否有关系的判断逻辑是是否出现在同一评论中,且每个点越大说明该单词与cheese共同出现的次数越多。

5.2.3 综合分析,为餐饮类商家经营提供一些合理建议

5.2.3.1 商家设施服务方面:

通过筛选评分不小于4的餐馆所支持的排名前20位的设施服务可以给出一些建议:

1.  提供多元化的支付方式:接受多种支付方式,包括信用卡,可以为顾客提供更多的便利,从而提升他们的购物体验。

2.  注重设施的完善:提供停车位等设施,可以吸引更多的顾客,包括停车场、街边、代客泊车。

3.  提供便利的服务:提供外卖服务、预约服务、团体用餐等服务,可以满足顾客的不同需求,从而提升他们的满意度。

4.  营造良好的氛围:提供户外座位、电视、欢乐时光等,可以营造一个舒适和愉快的氛围,使顾客愿意在你的商家消费更多的时间。

5.  关注顾客的需求:提供一些就餐的特定氛围,可以显示出你的商家关注并满足顾客的个人需求。

5.2.3.2 商家价格设置方面:

1.    定价策略:大多数评分高的商家的价格等级为12,这表明顾客可能更倾向于价格适中的商家。因此,商家可能需要考虑他们的定价策略,确保他们的价格既能吸引顾客,又能拥有良好的利润。

2.    高端市场:尽管价格等级为34的商家数量较少,但这也可能意味着在高端市场上的竞争较小。如果商家提供的产品或服务具有高质量,并且能满足高端市场的需求,那么他们可能会在这个市场上取得成功。

5.2.3.3 商家选址方面:

选择评论数量多的城市:评论数量可以反映出该地区的商业活跃度和消费者的参与度。例如,PhiladelphiaNew OrleansNashvilleTampaTucson这些城市的评论数量较多,这可能意味着这些城市的消费者更愿意在Yelp上留下评论,从而为商家提供更多的反馈和曝光机会。

5.2.3.4 餐馆菜系选择:

夏威夷菜系的餐馆平均评分在4分以上,说明夏威夷菜在该地区的认可度较高,餐馆质量普遍较高。

六、总结

实训还是收获颇多,谨以此记录下第一次的大数据分析项目。谢谢你的观看!

源代码链接: https://pan.baidu.com/s/1jUad0qNBOnLopM2Poi-_jg 提取码: 1229 

如果对你有帮助的话还希望能给个赞,谢谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值