• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python3.7通过thrift操作hbase的示例代码

python 搞代码 4年前 (2022-01-08) 17次浏览 已收录 0个评论

HBase是一个分布式的、面向列的开源数据库,其是Apache的Hadoop项目的子项目。这篇文章主要介绍了python3.7通过thrift操作hbase的示例代码,需要的朋友可以参考下

HBase是一个分布式的、面向列的开源数据库,其是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。其数据结构类似与Redis的key-value模式。

 

python3.7 通过 thrift , rpc 接口操作 hbase ,指定依赖库为: thrift 和 hbase-thrift 。 然而我们 在 python3.7 环境中发现 hbase-thrift-0.20.4 无法被支持, hbase-thrift 官方仅推荐用于 python2.x 。 于是有了下边的 patch 版本 和 patch 版本写法的客户端。

patch 版本下载,适用于 python 3.x : http://dl.cpp.la/Archive/hbase-thrift-0.20.4.patch.tgz

卸载 hbase-thrift-0.20.4 版本

 # pip3 list | grep hbase-thrift >> hbase-thrift    0.20.4 # pip3 uninstall hbase-thrift -y >> Successfully uninstalled hbase-thrift-0.20.4

安装 hbase-thrift-0.20.4.patch 版本(支持 python3.x )

 wget http://dl.cpp.la/Archive/hbase-thrift-0.20.4.patch.tgz tar -zxvf hbase-thrift-0.20.4.patch.tgz cd hbase-thrift-0.20.4.patch python3 setup.py install

检测安装是否成功

 # pip3 list | grep hbase-thrift >> hbase-thrift    0.20.4.patch Python3.7 操作 hbase-thrift-patch 客户端代码示例 from thrift.transport import TSocket from thrift.transport.TTransport import TBufferedTransport from thrift.protocol import TBinaryProtocol from hbase import Hbase from hbase.ttypes import ColumnDescriptor from hbase.ttypes import Mutation class HBaseClient(object): def __init__(self): self.__ip = HBASE_URI.get("HOST") self.__port = HBASE_URI.get("PORT") self.__transport = self.createSocket protocol = TBinaryProtocol.TBinaryProtocol(self.__transport) self.__client = Hbase.Client(protocol) self.__transport.open() @property def createSocket(self): CS = TSocket.TSocket(self.__ip, self.__port) CS.setTimeout(60*1000) return TBufferedTransport(CS) def __del__(self): self.__transport.close() def get_tables(self): """ get all table name :return: table name list """ return self.__clie<strong style="color:transparent">来源gaodai#ma#com搞@@代~&码网</strong>nt.getTableNames() def create_table(self, table, *columns): """ create table :param table: table name :param columns: columns name , variable parameter """ func = lambda col: ColumnDescriptor(col) column_families = list(map(func, columns)) self.__client.createTable(table, column_families) def delete_table(self, table): ''' delete table in hbase :param table: tableName :return: ''' if self.__client.isTableEnabled(table): self.__client.disableTable(table) self.__client.deleteTable(table) def put(self, table, row, columns): """ add record :param table: table name :param row: :param columns: :return: """ self.__client.mutateRow(table, row, [Mutation(column=k, value=v) for k, v in columns.items()]) def delete(self, table, row, column): """ delete record :param table: table name :param row: """ self.__client.deleteAll(table, row, column) def scan(self, table, start_row="", columns=None): """ get record :param table: table name :param start_row: :param columns: """ scanner = self.__client.scannerOpen(table, start_row, columns) while True: r = self.__client.scannerGet(scanner) if not r: break yield dict([(k, v.value) for k, v in r[0].columns.items()]) if __name__ == "__main__": client = HBaseClient() for v in client.scan('studentd', columns={"cpp.la":"https://cpp.la"}): print(v) by:cpp.la

ps:python3.7连接hbase

pip安装thrift 和hbase 包

 from thrift.transport import TSocket,TTransport from thrift.protocol import TBinaryProtocol,TCompactProtocol from hbase import Hbase socket = TSocket.TSocket('10.1.21.35',port=9090) socket.setTimeout(5000) transport = TTransport.TFramedTransport(socket) protocol = TBinaryProtocol.TBinaryProtocol(transport) //不使用这个协议 protocol = TCompactProtocol.TCompactProtocol(transport) client = Hbase.Client(protocol) socket.open() table = client.getTableNames() print(table)

总结

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

以上就是python3.7通过thrift操作hbase的示例代码的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python3.7通过thrift操作hbase的示例代码

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址