一、环境要求 Hadoop+Hive+Spark+HBase 开发环境

二、数据描述 UserBehavior 是阿里巴巴提供的一个淘宝用户行为数据集。本数据集包含了 2017-09-11 至 2017-12-03 之间有行为的约 5458 位随机用户的所有行为(行为包括点击、购买、加 购、喜欢)。数据集的每一行表示一条用户行为,由用户 ID、商品 ID、商品类目 ID、 行为类型和时间戳组成,并以逗号分隔。关于数据集中每一列的详细描述如下具体字段 说明如下:

三、功能要求

1.数据准备(10 分)

1 请在 HDFS 中创建目录/data/userbehavior,并将 UserBehavior.csv 文件传到该目录。

2 通过 HDFS 命令查询出文档有多少行数据。

//先创建一个exam文件夹,将数据表放进去,并导入hdfs[root@gree2 exam]# hdfs dfs -mkdir -p /data/userbehavior/[root@gree2 exam]# hdfs dfs -put ./UserBehavior.csv /data/userbehavior/[root@gree2 exam]# hdfs dfs  -cat   /data/userbehavior/UserBehavior.csv  | wc -l

2.数据清洗

1) 请在 Hive 中创建数据库 exam

hive> create database exam;

2) 请在 exam 数据库中创建外部表 userbehavior,并将 HDFS 数据映射到表中

create external table if not exists userbehavior(user_id int,item_id int,category_id int,behavior_type string,time bigint
)
row format delimited fields terminated by ","
stored as textfile location "/data/userbehavior"

3) 请在 HBase 中创建命名空间 exam,并在命名空间 exam 创建 userbehavior 表,包含一个列簇 info

hbase(main):007:0> create_namespace 'exam' hbase(main):008:0> create 'exam:userbehavior','info'

4) 请在 Hive 中创建外部表 userbehavior_hbase,并映射到 HBase 中,并将数 据加载到 HBase 中

create external table if not exists userbehavior_hbase(user_id int,item_id int,category_id int,behavior_type string,time bigint
)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties ("hbase.columns.mapping"=":key,info:item_id,info:category_id,info:behavior_type,info:time")
tblproperties ("hbase.table.name"="exam:userbehavior");//开始映射
insert into userbehavior_hbase select * from userbehavior;//在hbase端查看是否成功
hbase(main):015:0> scan 'exam:userbehavior'

5) 请在 exam 数据库中创建内部分区表 userbehavior_partitioned(按照日期进行分区), 并通过查询 userbehavior 表将时间戳格式化为”年-月-日 时:

//设置分区
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;//创建分区表
create table userbehavoir_partitioned(user_id int,item_id int,category_id int,behavior_type string,time string
)
partitioned by (dt string)stored as orc ;//按格式插入分区表中
insert into userbehavoir_partitioned partition (dt)
select user_id,item_id,category_id,behavior_type,from_unixtime(time,"YYYY-MM-dd HH:mm:ss") as time,from_unixtime(time,"YYYY-MM-dd")as dt
from userbehavior;show partitions userbehavoir_partitioned;
select * from userbehavoir_partitioned;

3.用户行为分析

请使用 Spark,加载 HDFS 文件系统 UserBehavior.csv 文件,并分别使用 RDD 完成以下 分析。 1 统计 uv 值(一共有多少用户访问淘宝)

scala> val fileRdd=sc.textFile("/data/userbehavior")//数据进行处理
scala> val userbehaviorRdd=fileRdd.map(x=>x.split(",")).filter(x=>x.length==5)//统计不重复的个数
scala> userbehaviorRdd.map(x=>x(0)).distinct.count
res8: Long = 5458  

2 分别统计浏览行为为点击,收藏,加入购物车,购买的总数量

scala> userbehaviorRdd.map(x=>(x(3),1)).reduceByKey(_+_).collect.foreach(println)
(cart,30888)
(buy,11508)
(pv,503881)
(fav,15017)

4.找出有价值的用户

1 使用 SparkSQL 统计用户最近购买时间。以 2017-12-03 为当前日期,计算时间范围 为一个月,计算用户最近购买时间,时间的区间为 0-30 天,将其分为 5 档,0-6 天,7-12 4 天,13-18 天,19-24 天,25-30 天分别对应评分 4 到 0

//hive端操作
select t.user_id,(case when t.diff between 0 and 4 then 4when t.diff between 7 and 12 then 3when t.diff between 13 and 18 then 2when t.diff between 19 and 24 then 1when t.diff between 25 and 30 then 0else null end) level
from
(select user_id,datediff('2017-12-03',max(dt)) diff,max(dt) maxnumn
from userbehavoir_partitioned group by user_id) t;//sparksql端操作,可以直接连接hive进行操作,用到特殊写法scala> spark.sql("""| select t.user_id,|        (|            case when t.diff between 0 and 4 then 4|                 when t.diff between 7 and 12 then 3|                 when t.diff between 13 and 18 then 2|                 when t.diff between 19 and 24 then 1|                 when t.diff between 25 and 30 then 0|            else null end|            ) level| from| (select user_id,datediff('2017-12-03',max(dt)) diff,max(dt) maxnumn| from  exam.userbehavoir_partitioned group by user_id) t| """).show

2 使用 SparkSQL 统计用户的消费频率。以 2017-12-03 为当前日期,计算时间范围为 一个月,计算用户的消费次数,用户中消费次数从低到高为 1-161 次,将其分为 5 档,1-32,33-64,65-96,97-128,129-161 分别对应评分 0

//hive端操作
select t.user_id,(case when t.num between 129 and 161 then 4when t.num between 97 and 128 then 3when t.num between 65 and 96 then 2when t.num between 33 and 64 then 1when t.num between 1 and 32 then 0else null end) level
from
(select user_id,count(user_id) num
from exam.userbehavoir_partitioned where behavior_type="buy"
and dt between '2017-11-03' and '2017-12-03'
group by user_id) t;//sparksql操作scala> spark.sql("""| select t.user_id,|        (|            case when t.num between 129 and 161 then 4|            when t.num between 97 and 128 then 3|            when t.num between 65 and 96 then 2|            when t.num between 33 and 64 then 1|            when t.num between 1 and 32 then 0|            else null end|            ) level| from| (select user_id,count(user_id) num| from exam.userbehavoir_partitioned where behavior_type="buy"| and dt between '2017-11-03' and '2017-12-03'| group by user_id) t| """).show

阿里巴巴淘宝用户行为数据集,UserBehavior表实战分析相关推荐

  1. python 淘宝用户行为数据集 分析与数据源

    利用Python对淘宝用户行为进行分析 源数据来源于: https://tianchi.aliyun.com/dataset/dataDetail?dataId=649&userId=1 可以 ...

  2. 利用Python对淘宝用户行为进行分析

    1. 项目背景 该项目的数据集来源于天池,是由阿里巴巴提供的一个淘宝用户行为数据集,其中包含了2017年11月25日至2017年12月3日之间,一百万个随机用户的所有用户行为(行为包括点击.购买.加购 ...

  3. 【入门数据分析】淘宝用户行为分析

    前言 分析目的:本文基于淘宝1年的交易数据对其用户行为进行多角度分析,对相关问题进行解释并提供建议. 分析工具:MySQL.excel 主要模型:AARRR模型 一.分析问题和思路 本文采用淘宝电商的 ...

  4. 淘宝用户行为统计分析-python

    淘宝用户行为统计分析-Python 一 分析背景 二 分析目的 三 分析思路 四 数据处理 4.1 数据导入 4.2 数据清洗 4.3 数据转换 五 统计分析 5.1 用户习惯 5.2 销售规律 5. ...

  5. 大数据实战 --- 淘宝用户行为数据分析

    目录 开发环境 数据描述 功能需求 数据准备 数据清洗 用户行为分析 找出有价值的用户 开发环境 Hadoop+Hive+Spark+HBase 启动Hadoop:start-all.sh 启动zoo ...

  6. 基于MySQL的淘宝用户行为分析

    该文目录 一.分析背景 二.分析目的 三.理解数据 四.提出相关问题 1.相关问题 2.分析框架 五.数据清洗 1.选择子集 2.数据类型修改 3.重复值检查 4.缺失值处理 5.一致性处理 6.异常 ...

  7. MySQL项目-淘宝用户购物行为数据可视化分析

    一.项目背景与目的 1.1 项目背景 UserBehavior是阿里巴巴提供的一个淘宝用户行为数据集,用于隐式反馈推荐问题的研究.数据集包含了2017年11月25日至2017年12月3日之间,有行为的 ...

  8. 电商淘宝用户行为分析

    一.项目介绍 本次实战的数据是来自阿里巴巴提供的一个淘宝用户行为数据集,用于隐式反馈推荐问题的研究. 数据下载:https://tianchi.aliyun.com/dataset/dataDetai ...

  9. 实战整理-阿里天池淘宝用户购物行为数据集实战(MySQL数据分析+Navicat)

    数据集链接:淘宝用户购物行为数据集_数据集-阿里云天池 因原数据集过大,电脑和MySQL跑不动,故截取前一百万条数据进行实战演练. 1.导入数据 利用navicat软件直接导入下载好的Excel文件( ...

  10. mysql 时间段内的周末_淘宝用户行为数据分析(MySQL)

    利用MySQL对淘宝用户行为数据进行分析.分析步骤如下: 1 提出问题 2 理解数据 3 数据清洗 4 构建模型 5 结论 6 建议 淘宝是目前国内最大的电商平台,人们网购的主要渠道之一.买家通过搜索 ...

最新文章

  1. 快来试试 Spring Boot 应用可视化监控,一目了然!
  2. 开源 java CMS - FreeCMS2.8 模板管理
  3. mysql keepalived_mysql高可用+keepalived
  4. 事件冒泡之cancelBubble和stoppropagation的区别
  5. .NET 环境中使用RabbitMQ
  6. VB的一些项目中常用的通用方法-一般用于验证类
  7. 传江民总裁王江民因心脏病突发逝世 享年59岁
  8. ArrayBlockingQueue, LinkedBlockingQueue, ConcurrentLinkedQueue, RingBuffer
  9. Python之路 day1 基础1 变量 for while 用户输入
  10. 手持设备点击响应速度,鼠标事件与touch事件的那些事
  11. LoRa网关的特点及应用
  12. 大数据处理平台简介和总结
  13. 优秀网页翻译:关于您的下一个汽车友好型原型
  14. 2017南宁(重温经典)
  15. 第一章 概率论的基本概念 1.6 独立性
  16. RHCE认证考试心得(转)
  17. 花火4G聚合路由器无线网络支持5G户外直播应急通讯工作
  18. 海尔微型台式计算机重装系统,海尔台式电脑怎么进行U盘一键重装win10系统
  19. 使用Hyper-V的虚拟机搭建集群
  20. 2023年重庆大学中国语言文学考研考情与难度、参考书及前辈经验

热门文章

  1. Java+Servlet+Jsp(el, jstl)+MyBatis的CRUD练习小项目
  2. 【Pycharm】解决Debug模式下出现collecting data问题
  3. python问题解决:TypeError: ufunc 'add' output (typecode 'O') could not be coerced to provided output para
  4. iphone双重认证关闭不了怎么办_Apple id双重认证,没有关闭的选项?
  5. 「精品」无损批量压缩图片工具 - Caesium Image Compressor
  6. MATLAB如何调用百度云文字识别API
  7. navicat can not load oci dll,193,126
  8. gem5——向简单脚本中添加缓存
  9. 最新USDT支付系统+支持ERC20/OMNI/代理商/第三方API
  10. tableau系列之在 Tableau 中构建地图