spark实践-淘宝双十一数据分析与预测

案例任务对淘宝双十一数据进行预处理、存储、查询和可视化分析。项目步骤0. 安装环境Ubuntu18.04Java 1.8MySQL 5.7.31Hadoop 3.1.3Hive 3.1.2Spark 2.4.0Sqoop 1.4.7Eclipse 4.14Pycharm 2020.21. 预处理1. 将原始数据集进行预处理2. 把文本文件的数据集导入数据仓库Hive中2. 存储1. 对数据进行查询分析2. 把Hive的数据导入MySQL中3. 数据分析1. 搭建动态W
摘要由CSDN通过智能技术生成

案例任务

对淘宝双十一数据进行预处理、存储、查询和可视化分析。

项目步骤

0. 安装环境

Ubuntu18.04
Java 1.8
MySQL 5.7.31
Hadoop 3.1.3
Hive 3.1.2
Spark 2.4.0
Sqoop 1.4.7
Eclipse 4.14
Pycharm 2020.2

1. 预处理和存储

a. 将原始数据集进行预处理
b. 把文本文件的数据集导入数据仓库Hive中

1. 数据集下载与查看
2. 数据集预处理
3. 导入HDFS
4. 在Hive上创建数据库

2. Hive数据分析

3. 导入MySQL

1. hive创建内表
2. MySQL建表
3. 使用Sqoop将数据从Hive导入MySQL

4. 利用Spark预测回头客

1. 预处理训练集和测试集
2. 预测


一、预处理

训练技能:

  • HDFS基本操作
  • Hive基本操作之创建数据库和建表
  • 基本数据预处理方法

任务清单:

  • 将原始数据集进行预处理
  • 把文本文件的数据集导入数据仓库Hive中

1. 数据集下载与查看

数据集下载。该数据集是淘宝2015年双11前6个月(包含双11)的交易数据(交易数据有偏移,但是不影响实验的结果),里面包含3个文件,分别是用户行为日志文件user_log.csv、回头客训练集train.csv、回头客测试集test.csv.
下面列出这3个文件的数据格式定义:
user_log.csv,日志中的字段定义如下:

  1. user_id 买家id
  2. item_id 商品id
  3. cat_id 商品类别id
  4. merchant_id 卖家id
  5. brand_id 品牌id
  6. month 交易时间:月
  7. day 交易事件:日
  8. action 行为,取值范围{0,1,2,3},0表示点击,1表示加入购物车,2表示购买,3表示关注商品
  9. age_range 买家年龄分段:1表示年龄<18,2表示年龄在[18,24],3表示年龄在[25,29],4表示年龄在[30,34],
    5表示年龄在[35,39],6表示年龄在[40,49],7和8表示年龄>=50,0和NULL则表示未知
  10. gender 性别:0表示女性,1表示男性,2和NULL表示未知
  11. province 收货地址省份

train.csv,test.csv,训练集和测试集拥有相同的字段,字段定义如下:

  1. user_id 买家id
  2. age_range 买家年龄分段
  3. gender 性别
  4. merchant_id 商家id
  5. label 是否是回头客,0值表示不是回头客,1值表示回头客,-1值表示该用户已经超出我们所需要考虑的预测范围。
    NULL值只存在测试集,在测试集中表示需要预测的值。
$ head -5 user_log.csv

user_id,item_id,cat_id,merchant_id,brand_id,month,day,action,age_range,gender,province
328862,323294,833,2882,2661,08,29,0,0,1,内蒙古
328862,844400,1271,2882,2661,08,29,0,1,1,山西
328862,575153,1271,2882,2661,08,29,0,2,1,山西
328862,996875,1271,2882,2661,08,29,0,1,1,内蒙古

2. 数据集预处理

删除字段名称:数据仓库Hive不需要第一行字段名称

$ sed -i '1d' user_log.csv

1d表示删除第1行,nd表示删除第n行。

3. 导入HDFS

user_log.csv上传到HDFS中,启动hadoop

$ hdfs dfs -mkdir -p /taobao/dataset/user_log
$ hdfs dfs -put user_log.csv /taobao/dataset/user_log

可在http://localhost:9870上看到上传成功的数据集。
在这里插入图片描述

4. 在Hive上创建数据库

1. 启动mysql和hive
$ service mysql start
$ hive
2. 在hive上创建数据库

数据库名:taobao

hive> create database taobao;
hive> use taobao;
3. 创建表

hive内表和外表的区别:
1、在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理。
2、在删除表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!
那么,应该如何选择使用哪种表呢?在大多数情况没有太多的区别,因此选择只是个人喜好的问题。
但是作为一个经验,如果所有处理都需要由Hive完成,那么应该创建表,否则使用外部表。

内表例子:

hive> create table test(id int,
    > name string,
    > age int,
    > tel string)
    > row format delimited
    > fields terminated by '\t'
    > stored as textfile;

外部表例子:

hive> create external table exter_table(
    > id int,
    > name string,
    > age int,
    > tel string)
    > row format delimited
    > fields terminated by '\t'
    > stored as textfile location '/home/qnstar/external';	#HDFS地址

表名:user_log. 类型:外部表,包含字段:

  1. user_id int 买家id
  2. item_id int 商品id
  3. cat_id int 商品类别id
  4. merchant_id int 卖家id
  5. brand_id int 品牌id
  6. month string 交易时间:月
  7. day string 交易事件:日
  8. action int 行为,取值范围{0,1,2,3},0表示点击,1表示加入购物车,2表示购买,3表示关注商品
  9. age_range int 买家年龄分段:1表示年龄<18,2表示年龄在[18,24],3表示年龄在[25,29],4表示年龄在[30,34],
    5表示年龄在[35,39],6表示年龄在[40,49],7和8表示年龄>=50,0和NULL则表示未知
  10. gender int 性别:0表示女性,1表示男性,2和NULL表示未知
  11. province string 收货地址省份
hive> create external table user_log(
    > user_id int,
    > item_id int,
    > cat_id int,
    > merchant_id int,
    > brand_id int,
    > month string,
    > day string,
    > action int,
    > age_range int,
    > gender int,
    > province string)
    > comment 'create taobao.user_log'
    > row format delimited
    > fields terminated by 
  • 13
    点赞
  • 230
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值