Hbase 快速入门之 --案例讲解与表结构设计

原创
2016/03/10 20:42
阅读数 3K

案例背景:各位,相信各位都有浏览凤凰网的历史,那么凤凰网的广告相信各位也都点击过,可是各位有没有发现一个现象。当你某天点击一个广告后,后面的几天都会出现类似的广告,现在各个大的网站都会有这样的现象。比如你今天点击了家具的广告,那么之后,你就会发现跳出来的广告都是与家具有关。

用户行为分析。


也许各位都对这个名词不会陌生。而这就是现实中的一个典型的用户行为分析案例。

用户行为分析,分析的是数据,数据从何而来,从数据库中。数据库中的数据从用户的行为产生。鉴于这样的流程,那么很自然的想到:如何实现?如果数据保存在Hbase中又该如何实现。

针对这样的情形如果保存到传统的关系型数据库中很好设计,设计三张表,一个用户表,一个广告表,一个用户操作记录表,在操作记录表中含有操作的广告外键。

那么如果保存在Hbase中,因为之前没有设计Hbase的经验,下面就根据自己学习Hbase的知识,来设计我的第一个Hbase数据结构:

主题分析:用户行为分析可以看成是用户主题的一个需求。这里面提到一个用户主题,一个主题,可以含有多个需求,比如用户主题,可以含有用户行为分析,可以含有用户区域分析,可以含有用户性别分析,可以含有用户年龄结构分析,等等。下面主要讲解如何在Hbase中实现用户行为分析。

Hbase数据库设计:

Hbase中建立两张表:

一张用户表:USER ,该表含有两个列族:一个为用户属性列族(族名:userProperty);另外一个为用户行为属性(actionProperty)。行健为:用户ip

另外一张为广告表:ADVERT ,其含有一个列族(adProperty

下面说说两个表,三个列族的列分别是什么:

USERuserProperty:用户Ip区域(ipArea),用户ip国际(ipCountry),用户名ID(userId)

USERactionProperty:点击链接(link);广告行健(adId);点击时间(time,

ADERTadProperty:广告所属行业(adHy,广告利润(adMoney),广告所属商家comp

创建表这两个表;

向广告表的adProperty插入一个行健数据:

put 'ADERT','ad00120311', ' adProperty:adHy ','家具'
put 'ADERT','ad00120311', ' adProperty: adMoney','11.11'
put 'ADERT','ad00120311', ' adProperty: comp','淘宝'

下面分析一下用户的流程并创建数据:

1:用户第一次点击凤凰网的广告,凤凰网获取到用户的Ip与用户id(如果登陆了)

2:凤凰网根据用户ipUSER表中从actionProperty中查询该ip的操作记录。如果没有该ip的操作记录:

       则保存该用户的ip,并保存这次的操作记录,都是保存在USER表中但是保存的列族分别属于actionPropertyuserProperty中。

例子数据:

保存用户属性

put 'USER','11.11.11.1','userProperty:ipArea','上海'
put 'USER','11.11.11.1','userProperty:ipCountry','中国'
put 'USER','11.11.11.1','userProperty:userId','100001213'
保存用户行为
put 'USER','11.11.11.1', 'actionProperty: link,'/ifeng.com/……'
put 'USER','11.11.11.1', 'actionProperty:adId','ad00120311'
put 'USER','11.11.11.1', 'actionProperty:time','20130623172900'

3:当下一次用户再使用相同的IP进入到凤凰网时,凤凰网会更加用户ip在用户表USERuserProperty列族中寻找数据,如果能够找到,利用ipUSERactionProperty中寻找用户的操作记录。如果能够找到,则便能够获得广告的id。这表示这段时间,该用户对该产品比较感兴趣,所以需要推送该类型广告,然后利用广告id到广告表ADVERT中寻找该广告,然后寻找所有这个行业的广告信息推送给用户。这个案例中,推送给用户的就是家具广告。


展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
9 收藏
1
分享
返回顶部
顶部