加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

bigdata-016] python happybase 操作hbase

发布时间:2020-12-31 00:32:36 所属栏目:资源 来源:网络整理
导读:1. 用happybase库 操作 hbase ??? http://happybase.readthedocs.io/en/latest/ 2. cdh集群的hbase集群有三个节点 ??? hbase的版本是HBase 1.2.0 3. hbase base的log目录小于5g,导致报警,目录在/var/log/hbase,准备清空它。 ?? 删除不需要的log之后,所

1. 用happybase库 操作 hbase
??? http://happybase.readthedocs.io/en/latest/

2. cdh集群的hbase集群有三个节点
??? hbase的版本是HBase 1.2.0

3. hbase base的log目录小于5g,导致报警,目录在/var/log/hbase,准备清空它。
?? 删除不需要的log之后,所有服务都从红色变成黄色,log目录太小导致了大部分问题。log目录的容量必须要足够大。

4. python+happybase
??? 4.1 pyenv global anacodea3-4.1.1
??? 4.2 pip install happybase
??? 4.3 测试安装? python -c 'import happybase',不报错就是正常的
??? 4.4 要在bigdata-master上启动thrift server:
??????? hbase thrift -p 9090 start
??? 4.5 按照如下文档进行操作:
??????? http://happybase.readthedocs.io/en/latest/user.html#establishing-a-connection
??? 4.6 Hbase没有数据类型,所有的row keys,column name,column values都是简单视为raw byte string进行处理
??? 4.7 删除一条记录,也就是一个row_key对应的所有列族

???????? deleteall 'testtable','event_0'

5. 示例代码

#!/usr/bin/env python3
#! coding:utf-8 -*-


import happybase

#要先在hbase某个节点上开启thrift服务
#hbase thrift -p 9090 start
connection = happybase.Connection('192.168.0.1',autoconnect=False)
connection.open()

#print所有的表名
print('All tables: ',connection.tables(),'n')

#操作testtable表
#这个操作是一个提前声明-我要用到这个表了-但不会提交给thrift server做操作
table = connection.table(b'testtable')

#检索某一行
row = table.row(b'myrow-2')
print('a row:',row,'n')

#right
print(row[b'colfam1:q1'])
print(row[b'colfam1:q2'])

#wrong
# print(row['colfam1:q1'])
# print(row['colfam1:q2'])

#显示所有列族
print('所有列族',table.families(),'n')

#输出两列
print('print two rows:')
rows = table.rows([b'myrow-1',b'myrow-2'])
for key,data in rows:
    print(key,data)

#字典输出两列
print('n','print two dict rows')
rows_as_dict = dict(table.rows([b'myrow-1',b'myrow-2']))
print(rows_as_dict)

#输入row的一个列族所有值
row = table.row(b'myrow-2',columns=[b'colfam1'])
print('n','输出一个列族',row)

#scan操作
print('n','do scan')
for key,data in table.scan():
    print(key,data)
6. 测试高表插入记录: 批量插入1000条记录,0.1~0.6s 批量插入1万条记录,1.5~3s 每秒7k条记录,性能比较靠谱 7. 测试宽表插入记录: 批量插入1000条记录,0.1~0.6s 批量插入1万条记录,1.5~3s 每秒7k条记录 高表和宽表性能几乎一样!

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读