HBase rowkey设计实例

需求:绘制渠道用户的每日趋势(每分钟一组数据一天1440组,2000+个渠道,区分新/老用户,2*1440*2000+=576万+/每天),需要保存90天。

查询条件:渠道号、新or老用户、日期

rowkey:渠道_日期_新or老用户_小时分钟(hhmm)

 

连接HBase

from thrift.protocol import TBinaryProtocol
from thrift.transport import TSocket
from thrift.transport import TTransport
from hbase import Hbase

def hbase_connect():
    transport = TSocket.TSocket('*', 9090)
    # transport = TSocket.TSocket('10.50.14.105', 9090)
    hbase_transport = TTransport.TBufferedTransport(transport)
    protocol = TBinaryProtocol.TBinaryProtocol(transport)
    hbase_client = Hbase.Client(protocol)
    hbase_transport.open()
    return hbase_transport, hbase_client

创建表:

def create_hbase_table():
    transport, client = hbase_connect()
    tables = client.getTableNames()
    print tables
    client.createTable('client_rt_pv', [Hbase.ColumnDescriptor(name = 'default')])
    tables = client.getTableNames()
    print tables

 

插入数据:

mutationsbatch = []

#### loop
rowkey = '_'.join([tmp_pub, dayStr, 'ac', tmp_ct])
mutations = [
    Hbase.Mutation(column="default:pv", value=str(tmp_pv)),
    Hbase.Mutation(column="default:uv", value=str(tmp_uv)),
    Hbase.Mutation(column="default:pvdivuv", value=str('%.2f' % (tmp_pv/float(tmp_uv) if tmp_uv != 0 else 0, ))),
    Hbase.Mutation(column="default:tm", value=str(tmp_ct)),
    Hbase.Mutation(column="default:pub", value=str("".join([tmp_pub, ' ']))),
    Hbase.Mutation(column="default:pubname", value=pub_id.get(tmp_pub, 'unknown'))]

mutationsbatch.append(Hbase.BatchMutation(row=rowkey, mutations=mutations))

### end loop
hbase_client.mutateRows("client_rt_pv", mutationsbatch, None)
hive_transport.close()

 

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/622418

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。