如何使用python在hbase里进行模糊查询?

如何使用python在hbase里进行模糊查询


慕桂英4014372
浏览 742回答 1
1回答

蝴蝶刀刀

#导入thrift和habse包from thrift import Thriftfrom thrift.transport import TSocketfrom thrift.transport import TTransportfrom thrift.protocol import TBinaryProtocolfrom hbase import Hbasefrom hbase.ttypes import *#此处可以修改地址和端口host = '192.168.1.1'#默认端口为9090port = 9090#要查询的表名table = 'table_name'#定义一个过滤器,此为关键步骤filter = "RowFilter(=,'regexstring:.3333.')" #此行原创:)# Make sockettransport = TSocket.TSocket(host, port)# Buffering is critical. Raw sockets are very slow# 还可以用TFramedTransport,也是高效传输方式transport = TTransport.TBufferedTransport(transport)# Wrap in a protocol#传输协议和传输过程是分离的,可以支持多协议protocol = TBinaryProtocol.TBinaryProtocol(transport)#客户端代表一个用户client = Hbase.Client(protocol)#打开连接try:transport.open()scan.filterString=filterscanner = client.scannerOpenWithScan(table, scan)except Exception:finally:client.scannerClose(scan)transport.close()连接代码网上一搜一大堆,非原创,来源已不可考,非本人研究成果;关键就是这个:"RowFilter(=,'regexstring:.3333.')"这个过滤器要写对,hbase有十几种内置的过滤器方法,有几种比较运算符和比较器,上面这个是正则方式,即'regexstring:.3333.';过滤器整个双引号里面的内容会通过thrift传给hbase服务端处理,下划线这部分正则要支持java的正则要求不然会报错
打开App,查看更多内容
随时随地看视频慕课网APP