模块需求一:
hourly分析:统计一天24个小时中,每个小时内的活跃用户数、会话个数、会话长度
针对模块需求一,在mysql中创建对应结果表,使用sqoop将结果导出到mysql结果表中。--sqoop语句及mysql的结果表截图!!
----- 先创建外部映射hbase表中相关的列:
在hive中:
CREATE EXTERNAL TABLE event_logs(
rowkey string,
pl string,
en string,
u_ud string,
u_sd string,
s_time string
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:pl,info:en,info:u_ud,info:u_sd,info:s_time")
TBLPROPERTIES ("hbase.table.name" = "event_logs");
下面:新建hdfs上的目录,然后etl操作,清洗数据后到hbase中。
然后在hive中查询:
可以看到u_ud 和u_sd显示有具体的值。
--创建临时表:
create table stats_hourly_tmp1(
pl string,
en string,
u_ud string,
u_sd string,
s_time bigint,
hour int,
date string
) ;
对每条日志增加小时和日期字段
显示运行成功:
查看有数据。
--下面创建统计active users的结果表
然后添加数据:
然后查看数据:
-----然后统计sessions的结果表;
然后添加数据:
然后查看数据:
---下面就是统计会话长度的结果表
然后添加入数据;
查看结果:
-------然后下面就是将统计出的结果,使用sqoop导入到mysql中:
create table stats_hourly_active(
pl varchar(20),
times varchar(20),
hours int(10),
user_num int(10)
);
create table stats_hourly_session(
pl varchar(20),
times varchar(20),
hours int(10),
sess_num int(10)
);
create table stats_hourly_session_length(
pl varchar(20),
times varchar(20),
hours int(10),
sess_len int(10)
);
下面就是在sqoop下面进行执行从hdfs导出到mysql中;
------------------------------
bin/sqoop export \
--connect jdbc:mysql://com.hadoop:3306/mydb \
--username root \
--password 000 \
--table stats_hourly_active \
--fields-terminated-by "\001" \
--export-dir '/user/hive/warehouse/stats_hourly_active'
bin/sqoop export \
--connect jdbc:mysql://com.hadoop:3306/mydb \
--username root \
--password 000 \
--table stats_hourly_session \
--fields-terminated-by "\001" \
--export-dir '/user/hive/warehouse/stats_hourly_session'
bin/sqoop export \
--connect jdbc:mysql://com.hadoop:3306/mydb \
--username root \
--password 000 \
--table stats_hourly_session_length \
--fields-terminated-by "\001" \
--export-dir '/user/hive/warehouse/stats_hourly_session_length'
下面在mysql中查看:
select * from stats_hourly_active;
select * from stats_hourly_session;
select * from stats_hourly_session_length;