企业级系统用户浏览数据存储实例(hbase,hive,impala整合)

本文详细介绍了如何使用HBase和Hive进行大数据存储,并通过Hive进行高级ETL处理,最终将数据整合到Impala中进行计算。文章涵盖了表设计、数据插入、数据分区和抽取等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.hbase表设计

建表语句

create 'behavior', 'view', 'attention'

view用于用户的浏览信息的收集,

attention用于用户的关注信息的收集

数据如下

put 'behavior','user1', 'view:2015-10-22', "\x00\x00\x00\x09"

put 'behavior','user1', 'attention:2015-10-23', "\x00\x00\x00\x08"

put 'behavior','user2', 'view:2015-10-22', "\x00\x00\x00\x06"

put 'behavior','user2', 'attention:2015-10-23', "\x00\x00\x00\x05"

put 'behavior','user1', 'view:2015-10-24', "\x00\x00\x00\x0F"

put 'behavior','user2', 'attention:2015-10-24', "\x00\x00\x00\x04"

view:的列为用户操作的时间戳,值为浏览的或关注的用户id

2.hive设计

与hbase集成建表语句如下

create external table behavior (

username STRING

, visits map<STRING, INT>

, attention map<STRING, INT>

)

STORED BY'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key, view:#s:b,attention:#s:b")

TBLPROPERTIES("hbase.table.name"= "behavior");

至此用户的行为数据已经存储好了

由于要集成impala,而impala没有复合数据类型,所以用hive进行高层次的ETL然后供impala使用,由过成还可以对hive表进行分区。根据具成情况而定,如果每天的数据量都很大那就要可以按月分区后在按天进行分区。

hive高层抽取并分区

根据月进行分区

CREATE TABLE behavior_month (

username STRING,

num INT,

event_day STRING

)

PARTITIONED BY(event_month string)

ROW FORMAT DELIMITEDFIELDS TERMINATED BY '\t'

STORED AS textfile;

定期执行分区脚本:

FROM behavior LATERAL VIEW EXPLODE(visits) t as ts, user_id

INSERT OVERWRITE TABLE behavior_month PARTITION(event_month)

select username,  user_id, ts, substr(ts, 1,7) ;

至此已经根据月进行了数据的分区并且抽取去掉了复合数据类型,此表可以在impala中进行计算。

根据月,日进行分区(如果单日数据量都很大时选择此种方式)

CREATE TABLE behavior_month_day (

username STRING,

num INT

)

PARTITIONED BY(event_month STRING, event_day STRING)

ROW FORMATDELIMITED FIELDS TERMINATED BY '\t'

STORED AS textfile;

定期执行分区脚本

FROM behavior LATERAL VIEW EXPLODE(visits) t as ts, user_id

INSERT OVERWRITE TABLE behavior_month_day PARTITION(event_month, event_day)

select username,  user_id, substr(ts, 1,7), ts;

至此已经根据月进行了数据的分区并且抽取去掉了复合数据类型,此表可以在impala中进行计算。

关注的抽取方法同上

数据进入大数据平台的方式

可以在后台用HBASE API进行插入,也可以在前台用js通过HBASE REST 方式进行插入

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值