菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
279
0

网站用户行为分析

原创
05/13 14:22
阅读数 31946

网站用户行为分析

1步骤

数据准备

① 移动文件到dataset文件夹下

② 去除首行的属性

③ 为每个数据配置一个地区

1.1 本地数据集上传到数据仓库Hive

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

1.2 HIVE数据分析

  1. 用户行为分析需求:2014-12-11~12号有多少条购买商品的记录
  2. 用户行为分析需求:分析每月1-31号购买情
  3. 按某一特殊日期(如双12)进行用户行为分析 

① 各省份购买商品数量

② 商品购买与浏览比例

③ 用户活跃度分析

④ 购买5件以上商品的用户

  1. 用户购买与浏览比例

① 计算用户购买数与浏览数的比值。

② 创建表格保存结果。

  1. 按地理位置进行用户行为分析

① 广东地区每月1号的的购买数量

② 2014年12月12号发出到江西的货物数量

 

 

  1. 自定义需求3-5个:

① 2014-12-12号当天广东购买商品数

② 按照省份统计购买数量

③ 2014-12-12号当天的商品购买与浏览比例

④ 用户10001082在2014-12-12号当天活跃度;该用户点击行为占该当天所有点击行为的比例

⑤ 2014-12-12号当天购买4件商品以上的用户

1.3  Hive、MySQL、HBase数据互导 

  1. Hive数据分析结果(如用户购买与浏览比例),从Hive传输到MySQL中。
  2. Hive数据分析结果(如用户购买与浏览比例),从MySQL传输到Hbase中。
  3. 参照博客步骤,依次将user_action传入HiveMySQLHBase

 

1、 操作过程

数据准备

1、移动文件到dataset文件夹下

语句:hdfs dfs -mkdir -p /bigdatacase/dataset

截图:

 

 

 

2、去除首行的属性

语句:sed -i '1d' raw_user

截图:

 

 

 

3、为每个数据配置一个地区

语句:

截图:

 

 

 

1、本地数据集上传到数据仓库Hive

A.1sudo mkdir usr/local/bigdatacase

A.2sudo chown -R hadoop:hadoop ./bigdatacase

A.3mkdir usr/local/bigdatacase/dataset

A.4

A.5

 

 

B.1sed -i '1d' raw_user

B.2

B.3vim pre_deal.sh

 

 

 

B.4

 

 

C.1start-all.sh

 

 

 

C.2hdfs dfs -mkdir -p /bigdatacase/dataset

C.3

C.4hdfs dfs -put /usr/local/bigdatacase/dataset/user_table.txt /bigdatacase/dataset

 

 

 

C.5hdfs dfs -cat /bigdatacase/dataset/user_table.txt | head -10

 

 

 

D.1 hive>  create database dblab;

 

 

 

D.2 hive>  use dblab;

 

 

 

D.3hive>  CREATE EXTERNAL TABLE dblab.bigdata_user(id INT,uid STRING,item_id STRING,behavior_type INT,item_category STRING,visit_date DATE,province STRING) COMMENT 'Welcome to xmu dblab!' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION '/bigdatacase/dataset';

 

 

 

 

 

D4.1  select * from bigdata_user limit 10;

 

 

 

 

D4.2   select behavior_type from bigdata_user limit 10;

 

 

 

 

 

 

2、 HIVE数据分析

 

A操作Hive

hive> show tables;

 

hive> show create table bigdata_user;

 

hive> desc bigdata_user;

 

 

B操作过程

  1. 创建一个test.txt的词频文件

 

 

 

  1. 通过输入流的方式读取文件中的数据

 

 

 

 

 

 

  1. 获取数据之后,通过空格分隔,分别放入map集合中

 

 

 

 

 

 

  1. 输出统计过后的词频

 

 

 

  1. 小结

使用java语言实现词频统计,对于文件的读取使用的是一个输入流文件的接口函数实现的,如果我们要是用的文件数据过于大的话,对于读取的效率来说,非常的慢,因此java手动实现的词频统计仅仅适用于数据少的。

 

 

1、用户行为分析需求:2014-12-11~12号有多少条购买商品的记录

语句:select count(*) from bigdata_user where visit_date >'2014-12-10' and visit_date <'2014-12-13' and behavior_type='4' limit 10;

截图:

 

 

 

2用户行为分析需求:分析每月1-31号购买情况

语句:select count(distinct uid),month(visit_date) from bigdata_user where buhavior_type = '4' group by month(visit_date);

截图:

 

 

 

3、双12各省份购买商品数量

语句:select count(*),province from bigdata_user group by province;

截图:

 

 

 

4、双12商品购买与浏览比例

语句:

购买数:select count(*) from (select behavior_type from bigdata_user where visit_date=2014-12-12) a where a.behavior_type=4;

 

浏览数:select count(*) from (select behavior_type from bigdata_user where visit_date=2014-12-12) a where a.behavior_type=1;

截图:

购买数:

 

 

 

浏览数:

 

 

 

5、双12用户活跃度分析

语句:select count(*) from (select behavior_type from bigdata_user where visit_date=2014-12-12) a group by a.behavior_type;

截图:

 

 

 

6、双12当天购买5件以上商品的用户

语句:select uid from (select uid,behavior_type from bigdata_user where visit_date=2014-12-12) as a group by a.uid having count(behavior_type=4) >5;

截图:

 

 

 

8、创建表格保存结果。

语句:create table scan(province STRING,scan INT) COMMENT 'This is the search of bigdataday' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;

insert overwrite table scan select province,count(behavior_type) from bigdata_user where behavior_type='1' group by province;

 

截图:

 

 

 

 

按地理位置进行用户行为分析

 

9、广东地区每月1号的的购买数量

语句:select count(*) from (select visit_date,province,behavior_type from bigdata_user)as bt where bt.province=广东 and day(bt.visit_type)=1 and bt.behavior_type = 4;

截图:

 

 

 

10、以月的第n天为统计单位,依次显示第n天网站卖出去的商品的个数:

语句:select count(*),day(bt.visit_date) from (select visit_date,province,behavior_type) as bt where bt.behavior_type = 4 broup by day(bt.behavior_type);;

截图:

 

 

 

11、2014-12-12号当天广东购买商品数

语句:select * from bigdata_user where behavior_type = '4' and visit_date = '2014-12-12' and province=’广东’;

截图:

 

 

 

12、按照省份统计购买数量

语句:select count(*) from bigdata_user where buhavior_type='4' group by province;

截图:

 

 

 

13、2014-12-12号当天的商品购买与浏览比例

语句:select count(*) from bigdata_user where visit_date='2014-12-12'and behavior_type='4';

 

select count(*) from bigdata_user where visit_date ='2014-12-12';

 

截图:

 

 

 

 

 

 

 

 

 

14、用户100010822014-12-12号当天活跃度;该用户点击行为占该当天所有点击行为的比例

语句:select count(*) from bigdata_user where uid=10001082 and visit_date='2014-12-12';

截图:

 

 

 

15、2014-12-12号当天购买4件商品以上的用户

语句:select uid from bigdata_user where behavior_type='4' and visit_date='2014-12-12' group by uid having count(behavior_type='4')>4;

截图:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3HiveMySQLHBase数据互导

AHive预操作

hive> create table dblab.user_action(id STRING,uid STRING, item_id STRING, behavior_type STRING, item_category STRING, visit_date DATE, province STRING) COMMENT 'Welcome to XMU dblab! ' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;

 截图:

 

 

语句:hdfs dfs -ls /user/hive/warehouse/dblab.db/user_action

 截图:

 

 

语句:hive> INSERT OVERWRITE TABLE dblab.user_action select * from dblab.bigdata_user;

 截图:

 

 

 

 

 

 

 

语句:hive>select * from user_action limit 10;

 

 

 

 

A、使用Sqoop将数据从Hive导入MySQL

1#显示所有数据库

语句:mysql> show databases;

2 #创建dblab数据库

语句:mysql> create database

3 #使用数据库

 语句:dblab;mysql> use dblab

 

语句:mysql>show variables like "char%";

 

 

 

 创建结果表

语句:mysql> CREATE TABLE `dblab`.`user_action` (`id` varchar(50),`uid` varchar(50),`item_id` varchar(50),`behavior_type` varchar(10),`item_category` varchar(50), `visit_date` DATE,`province` varchar(20)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 截图:

 

 

 

 

数据导入

语句:sqoop export --connect jdbc:mysql://localhost:3306/dblab --username root --password 123456 --table user_action --export-dir '/user/hive/warehouse/dblab.db/user_action' --fields-terminated-by '\t';

截图:

 

 

 

 

 

  1. mysql> use dblab;
  2. mysql> select * from user_action limit 10;

 

 

 

 

 

B、使用Sqoop将数据从MySQL导入HBase

1、创建表user_action

语句:hbase> create 'user_action', { NAME => 'f1', VERSIONS => 5}

截图:

 

 

2、导入数据

语句:sqoop  import  --connect jdbc:mysql://localhost:3306/dblab --username root --password 123456--table user_action --hbase-table user_action --column-family f1 --hbase-row-key id --hbase-create-table -m 1

截图:

 

 

 

 

 

3、查看HBase中user_action表数据

语句:habse> scan 'user_action',{LIMIT=>10}

截图:

 

C、参照博客步骤,依次将user_action传入Hive、MySQL、HBase中

1、Hiveuser_action

语句:select * from user_action limit10;

截图:

 

2、MySQLuser_action

语句:select * from user_action limit 10

截图:

 

 

 

 

3、HBaseuser_action

语句:habse> scan 'user_action',{LIMIT=>10}

 

截图:

 

 

 

 

 

发表评论

0/200
279 点赞
0 评论
收藏