IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 大数据课程项目:基于Spark的热门品类Top10分析 -> 正文阅读

[大数据]大数据课程项目:基于Spark的热门品类Top10分析

1.案例需求分析与设计

1.1.案例背景

品类指商品所属分类,用户在访问电商网站时,通常会产生很多行为,例如查看商品的信息、将感兴趣的商品加入购物车和购买商品等,这些行为都将作为数据被网站存储。本案例我们将通过对电商网站存储的用户行为数据进行分析,从而统计出排名前10的热门品类。

1.2.案例目的

本案例通过用户行为数据实现热门品类Top10分析,首先对数据集进行分析,了解用户行为数据的数据结构。接着通过实现思路分析,了解热门品类Top10分析的实现流程。然后通过Jupyter Notebook开发工具实现热门品类Top10分析程序并将分析结果存储到HBase数据库,掌握运用Python语言编写Spark Core、Spark SQL和HBase程序的能力。

1.3.案例流程设计

本案例先用Pandas读取原数据集进行数据预处理,然后把处理完的数据放到HDFS中,通过PySpark去加载并进行数据分析,然后再用PyEcharts进行数据可视化,最后使用HBase来数据存储,如图1-1所示。

图1-1案例流程

1.4.实验环境

表1-1技术描述

软件版本

描述

Hadoop-3.3.1

其两大核心组件HDFS存储和MapReduce数据预处理

PyEcharts-1.9.1

提供直观,生动,可交互,可个性化定制的数据可视化

Spark-3.1.2

提供一系列的Spark生态圈技术

Python-3.8.8

提供Pandas库作数据预处理

HBase-2.4.9

存储非结构化和半结构化的松散数据

?

?

2.数据预处理

2.1.数据存放

把user_session.csv数据集放到/home/hadoop/jupyternotebook目录下并查看前5条数据,如图2-1所示。

图2-1查看数据集

由图2-1可得数据集有五个字段组成,具体如表2-1所示。

表2-1字段描述

字段名

含义

user_id

用户ID

item_id

商品ID

cat_id

商品品类ID

action_type

用户行为

province

省份

2.2.异常数据处理

在Jupyter Notebook中新建一个Python文件,然后用Pandas读取数据集并显示,如图2-2所示。

图2-2读取数据集

查看数据集是否存在缺失值,如图2-3所示。

图2-3查看缺失值

经图2-3得所有字段缺失值都为0,然后再查看重复值,主要对字段user_id、item_id和action_type作重复值查看,避免用户重复操作行为,如图2-4所示。

图2-4查看重复值

由图2-4所得原数据集存在10条重复数据,需要把重复数据删除并再次查看重复值,如图2-5所示。

图2-5删除重复值

2.3.字段值变换处理

查看字段action_type存在多少种类型,方便后续作字段值变换处理,如图2-6所示。

图2-6查看字段类型

由图2-6可得字段action_type有三种类型,分别为点击(click)、购物车(cart)和订单(order)。然后把字段值转换成数字整型代替,方便后续作数据分析,如图2-7所示。

图2-7字段值转换
2.4.数据保存
把预处理好的数据覆盖原数据集,如图2-8所示。
 

?

图2-8保存数据

?数据如图所示

3.数据仓库

3.1.数据上传

在HDFS里创建一个user_action文件,并把数据集上传到文件里,如图3-1所示。

图3-1上传数据

3.2.数据查看

查看已经上传到HDFS的数据,确保已经成功上传并查看前5条数据,如图3-2所示。

?

图3-2查看数据

4.数据分析

4.1.基于DSL统计分析

初始化PySpark环境并加载HDFS上的数据,如图4-1所示。

图4-1加载数据

对字段action_type进行统计,分析出用户通常会进行什么操作,如图4-2所示。

图4-2统计用户行为

对字段item_id进行统计,分析出最受欢迎的前十商品,如图4-3所示。

图4-3最受欢迎前十商品

对字段cat_id进行统计,分析出最受欢迎的前十品牌,如图4-4所示。

图4-4最受欢迎前十品牌

4.2.基于SQL统计分析

要使用Spark SQL进行统计分析先要创建一个临时表,如图4-5所示。

图4-5创建临时表

对字段action_type进行统计,分析出用户通常会进行什么操作,如图4-6所示。

?

图4-6用户行为统计

对字段cat_id进行统计,分析出最受欢迎的前十商品,如图4-7所示。

?

?

图4-7最受欢迎前十商品

对字段cat_id进行统计,分析出最受欢迎的前十品牌,如图4-8所示。

?

?

图4-8最受欢迎前十品牌

5.数据可视化

5.1.饼图

对用户行为统计的结果用饼图展示,如图5-1所示。

#统计字段action_type
action_num = spark.sql('select action_type,count(1) as num from user group by action_type order by action_type')
#DataFrame字段值转List
num = action_num.select('num').rdd.flatMap(lambda x:x).collect()

from pyecharts.charts import Pie
from pyecharts import options as opts
#1:浏览,2:购物车,3:订单
keys = ['浏览', '购物车', '订单']
pie = (Pie(init_opts=opts.InitOpts(width='500px',height='350px')).add("",[list(z) for z in zip(keys,num)])
      .set_global_opts(title_opts=opts.TitleOpts(title="用户行为统计")))
pie.render_notebook()

图5-1饼图展示

5.2.柱状图

对最受欢迎前十商品的结果用柱状图展示,如图5-2所示。

#统计字段item_id
item_num = spark.sql('select item_id,count(1) as num from user group by item_id order by num desc limit 10')
#DataFrame字段值转List
num = item_num.select('num').rdd.flatMap(lambda x:x).collect()
item = item_num.select('item_id').rdd.flatMap(lambda x:x).collect()

from pyecharts import options as opts
from pyecharts.charts import Bar
bar = (Bar(init_opts=opts.InitOpts(width='900px',height='400px'))
       .add_xaxis(item).add_yaxis('欢迎度',num)
      .set_global_opts(xaxis_opts=opts.AxisOpts(name='商品ID',name_location='middle',name_gap=30),
                       title_opts=opts.TitleOpts(title='最受欢迎前十商品')))
bar.render_notebook()

图5-2柱状图展示

5.3.折线图

对最受欢迎前十品牌的结果用折线图展示,如图5-3所示。

#统计字段cat_id
cat_num = spark.sql('select cat_id,count(1) as num from user group by cat_id order by num desc limit 10')
#DataFrame字段值转List
num = cat_num.select('num').rdd.flatMap(lambda x:x).collect()
cat = cat_num.select('cat_id').rdd.flatMap(lambda x:x).collect()

from pyecharts.charts import Line
import pyecharts.options as opts
line=(Line(init_opts=opts.InitOpts(height='400px'))
    .add_xaxis(cat)
    .add_yaxis('欢迎度',num)
    .set_global_opts(xaxis_opts=opts.AxisOpts(name='品牌ID',name_location='middle',name_gap=30),
                     title_opts=opts.TitleOpts(title='最受欢迎前十品牌')))
line.render_notebook()

图5-3折线图展示?

?

6.数据存储

6.1.创建表

新建一个终端启动HBase服务和HBase Shell交互式命令行,命令如下:

start-hbase.sh

hbase shell

在HBase中创建了一个user_action表,这个表中有一个列族f1,历史版本保留数量为5,如图6-1所示。

图6-1创建表

6.2.插入数据

安装happybase和thrift库,命令如下:

pip install happybase

pip install thrift

在终端输入以下命令,因为Hbase是用Java写的,原生地提供了Java接口,如果用的是其他的语言,则需要开启连接原生地提供的thrift接口服务器。

hbase thrift start-port:9090

此处遇到问题?:

?

?

错误原因:
因为hbase与Hue集成时需要开启9095端口.就是thrift

?执行hbase?thrift start &

hbase thrift start-port:9090? ? ?开启ThriftServer服务?

?

?

?

(ThriftServer进程已开启)?

?

?

然后回到Jupyter Notebook连接HBase并插入“最受欢迎前十品牌”的数据,如图6-2所示。

cat_num = spark.sql('select cat_id,count(1) as num from user group by cat_id order by num desc limit 10')
#DataFrame字段值转List
num = cat_num.select('num').rdd.flatMap(lambda x:x).collect()
cat = cat_num.select('cat_id').rdd.flatMap(lambda x:x).collect()

#导入HBase库happybase
import happybase
#连接HBase
conn = happybase.Connection("localhost", 9090)
table = conn.table("user_action")
#插入数据
for i in range(len(cat)):
    table.put(str(i+1),{"f1:cat_id":str(cat[i])})
    table.put(str(i+1),{"f1:num":str(num[i])})

图6-2插入数据

6.3.查看数据

然后在HBase Shell交互式命令行查看数据是否成功插入,如图6-3所示。

图6-3查看数据?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-01 15:18:23  更:2022-06-01 15:19:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:41:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码