python hbase kerbose_Python操作HBase之happybase

安装Thrift

安装Thrift的具体操作,请点击链接

pip install thrift

安装happybase

pip install happybase

连接(happybase.Connection)

happybase.Connection(host=’localhost’, port=9090, timeout=None, autoconnect=True, table_prefix=None, table_prefix_separator=b’_’, compat=’0.98’, transport=’buffered’, protocol=’binary’)

获取连接实例

host:主机名

port:端口

timeout:超时时间

autoconnect:连接是否直接打开

table_prefix:用于构造表名的前缀

table_prefix_separator:用于table_prefix的分隔符

compat:兼容模式

transport:运输模式

protocol:协议

connection = happybase.Connection(host="192.168.0.156",port=9090,timeout=None,autoconnect=True,table_prefix=None,table_prefix_separator=b‘_‘,compat=‘0.98‘, transport=‘buffered‘,protocol=‘binary‘)

使用连接池

Hbase自带有线程安全的连接池,踏允许多个线程共享和重用已经打开的连接。这对于多线程的应用是非常有用的。当一个线程申请一个连接,它将获得一个租赁凭证,在此期间,这个线程单独享有这个连接。当这个线程使用完该连接之后,它将该连接归还给连接池以便其他的线程可以使用

#创建连接,通过参数size来设置连接池中连接的个数

pool = happybase.ConnectionPool(size=3, host=‘10.1.13.111‘, table_prefix=‘myProject‘)#获取连接

with pool.connection() as connection:print connection.tables()

open():打开传输,无返回值

connection.open()

close():关闭传输,无返回值

connection.close()

compact_table(name,major=False):压缩指定表格,无返回值

name:表名

major:是否主要压缩

connection.compact_table(name,major=False)

create_table(name,families):创建表,无返回值

name:表名

families:列族

families ={"cf":dict(),"df":dict()

}

connection.create_table(name,families)#如果连接时,有传递表前缀参数时,真实表名将会是:"{}_{}".format(table_prefix,name)

connection.create_table(‘my_table‘,

{‘cf1‘: dict(max_versions=10),‘cf2‘: dict(max_versions=1, block_cache_enabled=False),‘cf3‘: dict(), #use defaults

}

)

此时,我们再通过connection.tables()查看可以使用的table,结果为[‘my_table‘]

创建的table即my_table包含3个列族:cf1、cf2、cf3

使用table的命名空间

因为一个Hbase会被多个项目共同使用,所以就会导致table的命名冲突,为了解决这个问题,可以在创建table的时候,手动加上项目的名字作为table名字的前缀,例如myproject_xyz。

但是这样做比较麻烦,happybase帮我们做好了工作,我们可以在与Hbase建立连接的时候,通过设置table_prefix参数来实现这个功能

connection = happybase.Connection(‘10.1.13.111‘, table_prefix=‘myproject‘)

此时connection.tables()只会返回包含在该命名空间里的tables,且返回的tables的名字会以简单的形式显示,即不包含前缀。

delete_table(name,disable=False):删除表,无返回值

name:表名

disable:是否先禁用表

connection.delete_table(name,disable=False)

disable_table(nam

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值