分享

求一个用户画像的解决方案 使用hbase

zcfightings 发表于 2015-8-7 14:06:17 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 3 104061
目的:用户画像。
背景:dps到各种日志文件,日志文件中包含用户信息:姓名,年龄,身份证号, 设备号(用户使用的手机id,电脑mac地址等),手机,qq,淘宝账号 ,            网易邮箱,爱奇艺账号,等等。
需求:传递给系统一个用户号码(比如qq号),系统能返回出该qq用户所有的信息及用户标签。

方案:打算用hbase来实现(事实上项目经理让考虑用图数据库来实现,但我感觉hbase更合适),但具体的rowkey ,列族 都不知道该怎么设计。

个人思路:利用各种账号拼成一个uid(各种账号怎么来,),先建立每个账号与此uid的关联的表,用户无论输入qq还是手机号,都能查到唯一标示该用户                  的uid,在建立uid与所有用户信息关联的表(uid为rowkey,其他为列)

问题:求一个合理的hbase设计方案。

本帖被以下淘专辑推荐:

已有(3)人评论

跳转到指定楼层
s060403072 发表于 2015-8-7 14:53:26


rowkey的设计还是需要根据楼主的需求。hbase特点就是对于rowkey查询是相当快的,但是也存在问题,就是对于非rowkey查询很慢。所以rowkey很重要,前期设计的不好,会造成系统性能很慢。
比如谷歌使用类似hbase的bigtable。就是一个框,这个框的内容肯定是rowkey了。

用户画像同样也是的,需要把自己关心的内容放到rowkey里,但是又不能放太多。
盲目给楼主建议,肯定不行的。所以楼主最好说一下业务背景,关心的数据。等等,这个是不能一拍脑袋就定的。

这有篇相关内容,希望有所帮助。
大数据在京东用户画像技术曝光












回复

使用道具 举报

zcfightings 发表于 2015-8-7 16:47:58
s060403072 发表于 2015-8-7 14:53
rowkey的设计还是需要根据楼主的需求。hbase特点就是对于rowkey查询是相当快的,但是也存在问题,就是 ...

        首先 非常感谢你耐心的回答!我这里把场景详细描述一下 大。
        我们从日志信息中分析到大量用户信息,如用户用手机登陆qq,我们可以获取到qq,手机型号,还有可能手机号码; 用户又用电脑登陆了qq和淘宝账号,我们可以获得电脑mac地址和淘宝账号和qq号;而我们就可以通过qq号,把用户手机型号,手机号码,qq号,淘宝号,电脑mac地址都关联起来。以此类推最后把一个人的账号信息收集的非常全面。
        有了这些数据,公司想往外提供一种服务,如服务使用者输入一个账号(无论是qq,手机号还是淘宝账号,暂且以qq号为例)我们希望能查到和这个qq号关联的所有的用户信息(用户姓名,身份证号,其他各种账号信息)返回给服务使用者。
        基于此想法,我个人想建立两个table,一个各种账号和uid的关联,以各种账号为rowkey,以uid为value;另一个以uid为rowkey,一个info 列族,列族中包含各种列信息,也就是该用户的各种账号信息。服务的流程就是,通过某一账号查到uid,再通过uid得到所有该user的信息。
       但这里有一些问题:
       (1)用户信息的关联,如你获取了该用户的手机号,qq号。同时你获取了该用户的电脑mac地址,淘宝账号。这时候他们是没法关联的(我们并没有一种关联规则来确定这些数据是来自于同一个用户)。
        (2) 第一个table中,以各种账号为rowkey,以uid作为value的表设计很不合理。

以上就是所面临的问题。
回复

使用道具 举报

leo_1989 发表于 2015-8-7 18:54:34
zcfightings 发表于 2015-8-7 16:47
首先 非常感谢你耐心的回答!我这里把场景详细描述一下 大。
        我们从日志信息中分析到大 ...


hbase不擅长连接的,最好设计成一个表,当然或则弄一个二级索引。
参考:
HBase二级索引实现方案
http://www.aboutyun.com/thread-14321-1-1.html




你们查询的时候,哪些是经常查询的内容。这些是需要弄明白的,而且必须明确。然后放到rowkey中。其它无所谓了,有一两个列族,列往里面放就行。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条