淘宝大数据分析案例

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 淘宝大数据分析案例

项目介绍

本次结合的是一份淘宝大数据数据,数据集的大小共177MB,数据一共有3182261份(三百多万份数据集),一般的软件是无法计算和分析的,比如Excel,MySQL,Python这些都无法较好的完成相关数据分析。

1.Excel一般是一万多行的数据就不可以了。

2.Python与MySQL虽然可以,但是查询的效率却不敢保证,容易出现电脑死机或者卡死,这个与电脑本身的配置有关,所以对于大数据的数据集,我们提供了Hadoop,伪分布式的储存机制,这样的结构与特点让我们的数据集,可以容纳到TB级以上,较有规律的查询和优化的查询,可以让我们的数据分析事半功倍。


本次的数据集在这里下载


数据表里面的字段如下

user_id age gender item_id behavior_type item_category time Province
用户ID,性别,商品ID,用户行为,商品种类,发生日期,发生省份

项目准备

前期准备

如果你想要使用Hadoop集群来操作这次案例,就必须要已经完全配置好了的才能完成下面的操作,必须要包含:hdfs,hbase,hive,flume,sqoop等插件,如果有需要的可以私信我,文件压缩包7-8GB,只能用百度云盘分享给你,解压之后直接可以使用,一步到位


注意:虚拟机首先是必须要有的,不然有我发的镜像文件也不可以的

项目开展

项目导入

如果你是第一次使用我推荐的系统,需要进行下面的一些简单操作:

1.启动和拷贝hive包到相应的目录下面,这个是为了利用flume导入而准备的

start-all.sh
cd ${HIVE_HOME}/hcatalog/share/hcatalog/
cp * ${FLUME_HOME}/lib/
cd ${FLUME_HOME}/lib/
ll

本次我将讲解两种导入的方法,一种是hive直接加载本地文件,另一种是利用flume自动导入数据,作为商业大数据数据,我们更倾向于后者,因为在平时采集日志或数据集,都是自动化的,自动化分布式爬虫,自动化导入,自动化分析,这样才是老板时刻想要的数据结果展示,所以作为数据分析师,在以后的工作之中如何把工作一键化是非常的重要的,但是平时自己练习的时候,基于一些少量的数据集,我们采用本地加载的方法还是比较的简单方便,各有各的优势,我们自己去取舍。


把下面的配置参数加入hive-site.xml文件里面全选覆盖即可

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
   <name>javax.jdo.option.ConnectionURL</name>
   <value>jdbc:mysql://localhost:3306/hive?useSSL=false&amp;allowPublicKeyRetrieval=true&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>
</property>
<property>
   <name>javax.jdo.option.ConnectionDriverName</name>
   <value>com.mysql.jdbc.Driver</value>
</property>
<property>
   <name>javax.jdo.option.ConnectionUserName</name>
   <value>root</value>
</property>
<property>
   <name>javax.jdo.option.ConnectionPassword</name>
   <value>root</value>
</property>
<property>
    <name>hive.support.concurrency</name>
    <value>true</value>
</property>
<property>
    <name>hive.exec.dynamic.partition.mode</name>
    <value>nonstrict</value>
</property>
<property>
    <name>hive.txn.manager</name>
    <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
</property>
<property>
    <name>hive.compactor.initiator.on</name>
    <value>true</value>
</property>
<property>
    <name>hive.compactor.worker.threads</name>
    <value>1</value>
    <!--这里的线程数必须大于0 :理想状态和分桶数一致-->
</property>
<property>
    <name>hive.enforce.bucketing</name>
    <value>true</value>
</property>
</configuration>

创建文件夹,便于后续操作

mkdir -p /home/hadoop/taobao/data
mkdir -p /home/hadoop/taobao/tmp/point

创建配置文件,帮助我们导入到hive里面(flume组件配置)

vi taobao.properties
#定义agent名, source、channel、sink的名称
agent3.sources = source3
agent3.channels = channel3
agent3.sinks = sink3
#具体定义source
agent3.sources.source3.type = spooldir
agent3.sources.source3.spoolDir = /home/hadoop/taobao/data
agent3.sources.source3.fileHeader=false
#设置channel类型为磁盘
agent3.channels.channel3.type = file
#file channle checkpoint文件的路径
agent3.channels.channel3.checkpointDir=/home/hadoop/taobao/tmp/point
# file channel data文件的路径
agent3.channels.channel3.dataDirs=/home/hadoop/taobao/tmp
#具体定义sink
agent3.sinks.sink3.type = hive
agent3.sinks.sink3.hive.metastore = thrift://hadoop:9083
agent3.sinks.sink3.hive.database = taobao_data
agent3.sinks.sink3.hive.table = data
agent3.sinks.sink3.serializer = DELIMITED
agent3.sinks.sink3.serializer.delimiter = ","
agent3.sinks.sink3.serializer.serdeSeparator = ','
agent3.sinks.sink3.serializer.fieldnames = id,user_id,age,gender,item_id,behavior_type,item_category,time,Province
agent3.sinks.sink3.batchSize = 90
#组装source、channel、sink
agent3.sources.source3.channels = channel3
agent3.sinks.sink3.channel = channel3

在hive里面创建相应的表(利用flume导入的时候)

create database taobao_data;
• 1
use taobao_data;
create table `taobao_data`.`data`  (
  `id` varchar(255) ,
  `user_id` varchar(255) ,
  `age` varchar(255) ,
  `gender` varchar(255),
  `item_id` varchar(255),
  `behavior_type` varchar(255),
  `item_category` varchar(255),
  `time` varchar(255),
  `Province` varchar(255)
) 
clustered by(id) into 3 buckets
row format delimited fields terminated by ','
stored as orc tblproperties('transactional'='true');
首先运行该代码启动(终端命令行)
hive --service metastore -p 9083
运行下面的代码(终端命令行)
flume-ng agent --conf conf --conf-file taobao.properties -name agent3 -Dflume.hadoop.logger=INFO,console

在hive里面创建相应的表(利用本地加载方法)

create database taobao_data;
use taobao_data;
create table `taobao_data`.`data`  (
  `id` varchar(255) ,
  `user_id` varchar(255) ,
  `age` varchar(255) ,
  `gender` varchar(255),
  `item_id` varchar(255),
  `behavior_type` varchar(255),
  `item_category` varchar(255),
  `time` varchar(255),
  `Province` varchar(255)
) 
row format delimited fields terminated by ','
stored as textfile;
LOAD DATA LOCAL INPATH '/home/hadoop/data.txt' INTO TABLE data;

全部都在hive里面运行

结果表和接收表的创建:

5.hive里面创建结果表

create table `xsxk`.`whw_2019443818_xsxk_result`  (
  `key` varchar(255) ,
  `value` varchar(255)) ;

6.MySQL里面创建接收表

CREATE DATABASE xsxk;
create table `taobao`.`data_result`  (
  `key` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `value` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

经过上述的操作,导入数据就已经成功了

我们可以来看看:


image.png

项目分析

本次我给出了8个案例分析,如果你做到了这一步,下面的分析就是看你自己的才华了

你可以按照我的语句来分析,也可以按照你自己想法来实现本次的数据分析,正所谓“万事俱备只欠东风”

为了数据的准确性,下面的用户ID,商品ID,商品种类都是去重之后的,这样才有意义

– 1.统计每个省份的商品种类

SELECT count( DISTINCT d.item_category)as `商品种类`,d.Province `所属地` from `data` as d GROUP BY d.Province ORDER BY `商品种类` DESC;

image.png

– 2.统计每个省份的男女用户人数

SELECT DISTINCT d.user_id as `男性用户`,d.Province from `data` as d where d.gender=0 GROUP BY d.Province ;
SELECT DISTINCT d.user_id as `女性用户`,d.Province from `data` as d where d.gender=1 GROUP BY d.Province ;

– 3.统计各省总访问量

select 'PV', u.`总访问量`,u.`Province` as `省份` FROM 
(select count(*) AS `总访问量`,`Province` FROM `data` GROUP BY `Province`) u;

image.png

– 4.统计各省用户人数

SELECT 'UV', u. `用户数量`,u.`Province` FROM
(SELECT COUNT(DISTINCT user_id) AS `用户数量`,`Province` FROM `data` GROUP BY `Province`) u;

2021010119524129.png– 5.跳失率

什么是跳失率:

image.png

先要输入这一行代码。这个和我们hive里面用varchar类型有关,想知道具体原因请移步到淘宝案例文章:点击这里

set hive.mapred.mode=nonstrict;
SELECT "跳失率", u.`总访问量` FROM
(
SELECT b.`仅pv用户` / a.`总用户` AS `总访问量`  FROM
(SELECT count( DISTINCT user_id ) AS `总用户` FROM `data`) a,
(SELECT count( DISTINCT user_id ) AS `仅pv用户` from (select * from `data`) as c LEFT JOIN (SELECT  DISTINCT user_id as `id`  FROM `data` WHERE behavior_type = '2' or behavior_type='3' or behavior_type='4') as d on c.user_id=d.id WHERE d.id is NULL ) as b
) as u;

image.png

– 6.有购买行为的用户数量

SELECT COUNT(*) FROM (SELECT u.user_id, SUM( CASE u.behavior_type WHEN '4 ' THEN 1 ELSE 0 END ) AS buy FROM `data` u

image.png

–7. 用户的购物情况

SELECT COUNT(*) AS `总数`, SUM(CASE u.`behavior_type` WHEN '1 ' THEN 1 ELSE 0 END ) AS `点击行为`,SUM(CASE u.`behavio

image.png

– 8.复购率

SELECT t2.repeat_buy/t1.total AS `复购率` FROM 
(SELECT COUNT(DISTINCT u1.user_id) AS total FROM `data` u1) t1 , 
(SELECT COUNT(1) AS repeat_buy FROM
(SELECT u.user_id, SUM(CASE u.behavior_type WHEN '4 ' THEN 1 ELSE 0 END ) AS buy FROM `data` u  GROUP BY u.user_id HAVING buy>1) t) t2;

20210101211256876.png

项目分析

本次数据分析项目采用Python的第三方库的pyecharts这个强大的库,它的特点相信有许多的可视化的小伙伴一定很熟悉,高渲染的可视化效果让我们可以快速的展示!

下面我们就把刚刚的八个项目可视化出来

由于文章篇幅过于长,我就不完全可视化了

用户行为分析

20210101212200431.png

20210101232351434.png

20210101232421290.png

通过这个我们可以发现,大家还是都比较喜欢浏览商品页面,对于加购物车和收藏以及购买,不太多,这也说明了,淘宝里面的特点,丰富的商品让我们有点选择犹豫了。

from pyecharts import options as opts
from pyecharts.charts import Pie
a=["点击行为","收藏行为","加购物车行为","购买行为"]
b=[2998564,60921,91654,31122]
c = (
    Pie()
    .add(
        "",
         [list(z) for z in zip(a, b)]
    )
    .set_colors(["orange", "purple", "yellow", "red", "pink", "purple", "blue"])#颜色设置
    .set_global_opts(title_opts=opts.TitleOpts(title="用户行为分析"))
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"),
    toolbox_opts=opts.ToolboxOpts()
    )
    .render("饼图.html")
)

参考这个代码,我们可以直接连接数据库,通过数据的处理分别展示不同的类型数据集

20210101231945585.png

这个跳失率,看起来还是有点不乐观,说明只看不买不收藏的用户有点多,可能是本次的数据集非常的大,所以综合下来大家的平均行为还是浏览页面,以及看商品较多,这在电商大数据集下也是属于正常的结论。


||数据留给你们可视化了,自己去发挥自己的艺术细胞||


PV 93444 四川

PV 94105 福建

PV 93341 重庆市

PV 93796 吉林

PV 93979 湖北

PV 93503 新疆

PV 93671 台湾

PV 93343 河南

PV 93276 广东

PV 94260 宁夏

PV 93881 北京市

PV 93778 上海市

PV 93782 陕西

PV 93666 浙江

PV 93955 内蒙古

PV 93551 贵州

PV 93378 湖南

PV 93724 青海

PV 93336 黑龙江

PV 93544 澳门

PV 93460 甘肃

PV 93556 山西

PV 93178 海南

PV 93688 辽宁

PV 93369 天津市

PV 93899 西藏

PV 93406 河北

PV 93726 安徽

PV 93379 山东

PV 93443 香港

PV 93372 广西

PV 93678 江西

PV 93575 云南

PV 93219 江苏


UV 93756 上海市

UV 93552 云南

UV 93933 内蒙古

UV 93855 北京市

UV 93655 台湾

UV 93773 吉林

UV 93419 四川

UV 93346 天津市

UV 94234 宁夏

UV 93708 安徽

UV 93355 山东

UV 93528 山西

UV 93255 广东

UV 93349 广西

UV 93490 新疆

UV 93200 江苏

UV 93650 江西

UV 93383 河北

UV 93324 河南

UV 93635 浙江

UV 93152 海南

UV 93949 湖北

UV 93355 湖南

UV 93522 澳门

UV 93433 甘肃

UV 94073 福建

UV 93869 西藏

UV 93528 贵州

UV 93666 辽宁

UV 93314 重庆市

UV 93765 陕西

UV 93703 青海

UV 93420 香港

UV 93315 黑龙江


男性用户 省份

64772406 新疆

154141792 湖北

133773960 河南

125204052 广东

157079107 吉林

162728279 宁夏

20331578 上海市

28145118 四川

91298044 陕西

6357845 北京市

114749619 福建

162925618 贵州

169151099 湖南

151203745 甘肃

124588307 山西

161838654 海南

138211350 辽宁

182697679 天津市

177735754 浙江

190273854 河北

65841694 安徽

192816511 山东

100761551 广西

137215222 云南

94156421 重庆市

169364076 江西

121102112 香港

82398872 澳门

72957630 内蒙古

2405729 江苏

28518572 西藏

52342755 青海

16147613 台湾

131552233 黑龙江


女性用户 省份

68786611 四川

167664275 福建

125611298 重庆市

80542247 吉林

125574663 湖北

15818895 台湾

197168702 北京市

33734922 浙江

19618892 内蒙古

121152092 青海

157095955 黑龙江

86441455 澳门

98225813 贵州

133159769 河南

59135936 上海市

83870742 广东

167098473 西藏

112385169 新疆

17938248 陕西

115047781 海南

194635526 宁夏

161987546 辽宁

122802547 香港

197657745 江西

6002942 广西

97904095 云南

28987253 山东

71715466 山西

84458523 安徽

159809593 江苏

91157689 湖南

183075750 天津市

51040613 河北

185767669 甘肃


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
14
分享
相关文章
数据的秘密:如何用大数据分析挖掘商业价值
数据的秘密:如何用大数据分析挖掘商业价值
48 9
机器学习与大数据分析的结合:智能决策的新引擎
机器学习与大数据分析的结合:智能决策的新引擎
261 15
DataWorks产品测评|基于DataWorks和MaxCompute产品组合实现用户画像分析
本文介绍了如何使用DataWorks和MaxCompute产品组合实现用户画像分析。首先,通过阿里云官网开通DataWorks服务并创建资源组,接着创建MaxCompute项目和数据源。随后,利用DataWorks的数据集成和数据开发模块,将业务数据同步至MaxCompute,并通过ODPS SQL完成用户画像的数据加工,最终将结果写入`ads_user_info_1d`表。文章详细记录了每一步的操作过程,包括任务开发、运行、运维操作和资源释放,帮助读者顺利完成用户画像分析。此外,还指出了文档中的一些不一致之处,并提供了相应的解决方法。
用户画像分析(MaxCompute简化版)
通过本教程,您可以了解如何使用DataWorks和MaxCompute产品组合进行数仓开发与分析,并通过案例体验DataWorks数据集成、数据开发和运维中心模块的相关能力。
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系,保留最大方差信息,实现数据压缩、去噪及可视化。本文详解PCA原理、步骤及其Python实现,探讨其在图像压缩、特征提取等领域的应用,并指出使用时的注意事项,旨在帮助读者掌握这一强大工具。
184 4
PolarDB 以其出色的性能和可扩展性,成为大数据分析的重要工具
在数字化时代,企业面对海量数据的挑战,PolarDB 以其出色的性能和可扩展性,成为大数据分析的重要工具。它不仅支持高速数据读写,还通过数据分区、索引优化等策略提升分析效率,适用于电商、金融等多个行业,助力企业精准决策。
79 4
【大数据分析&机器学习】分布式机器学习
本文主要介绍分布式机器学习基础知识,并介绍主流的分布式机器学习框架,结合实例介绍一些机器学习算法。
555 5
【Clikhouse 探秘】ClickHouse 物化视图:加速大数据分析的新利器
ClickHouse 的物化视图是一种特殊表,通过预先计算并存储查询结果,显著提高查询性能,减少资源消耗,适用于实时报表、日志分析、用户行为分析、金融数据分析和物联网数据分析等场景。物化视图的创建、数据插入、更新和一致性保证通过事务机制实现。
401 14
数据为王:大数据处理与分析技术在企业决策中的力量
【10月更文挑战第29天】在信息爆炸的时代,大数据处理与分析技术为企业提供了前所未有的洞察力和决策支持。本文探讨了大数据技术在企业决策中的重要性和实际应用,包括数据的力量、实时分析、数据驱动的决策以及数据安全与隐私保护。通过这些技术,企业能够从海量数据中提取有价值的信息,预测市场趋势,优化业务流程,从而在竞争中占据优势。
225 2

热门文章

最新文章