python hbase读取数据发送kafka的方法


Posted in Python onDecember 27, 2018

本例子实现从hbase获取数据,并发送kafka。

使用

#!/usr/bin/env python
#coding=utf-8
 
import sys
import time
import json
 
sys.path.append('/usr/local/lib/python3.5/site-packages')
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from hbase1 import Hbase #调用hbase thrif1
from hbase1.ttypes import *
from kafka import KafkaConsumer
from kafka import KafkaProducer
from kafka.errors import KafkaError
import unittest
 
class HbaseOpreator:
 def __init__(self,host,port,table='test'):
  self.tableName=table
  self.transport=TTransport.TBufferedTransport(TSocket.TSocket(host,port))
  self.protocol=TBinaryProtocol.TBinaryProtocol(self.transport)
  self.client=Hbase.Client(self.protocol)
  self.transport.open()
 
 def __del__(self):
  self.transport.close()
 
 
 def scanTablefilter(self,table,*args):
  d=dict() 
  L=[]
  try:
   tableName=table
   # scan = Hbase.TScan(startRow, stopRow)
   scan=TScan()
   #主键首字母123
   # filter = "PrefixFilter('123_')"
   # filter = "RowFilter(=,'regexstring:.aaa')"
   #过滤条件,当前为 statis_date 字段,值为20170223
   # fitler = "SingleColumnValueFilter(tableName,'f','statis_date','20170223')"
   # filter="SingleColumnValueFilter('f','statis_date',=,'binary:20170223') AND SingleColumnValueFilter('f','name',=,'binary:LXS')"
   filter="SingleColumnValueFilter('info','name',=,'binary:lilei') OR SingleColumnValueFilter('info','name',=,'binary:lily')"
   scan.filterString=filter
   id=self.client.scannerOpenWithScan(tableName,scan,None)
   result=self.client.scannerGet(id)
   # result=self.client.scannerGetList(id,100)
   while result:
    for r in result:
     key=r.row
     name=r.columns.get('info:name').value
     age=r.columns.get('info:age').value
     phone=r.columns.get('info:phone').value
     d['key']=key
     d['name']=name
     d['age']=age
     d['phone']=phone
     # encode_result_json=json.dumps(d).encode(encoding="utf-8")
     # print(encode_result_json)
     L.append(d)         
    result=self.client.scannerGet(id)    
   return json.dumps(L).encode(encoding="utf-8")  
  finally:
   # self.client.scannerClose(scan)
   print("scan finish")
 
def sendKfafkaProduct(data):
 # self.host_port='localhost:9092'
 producer = KafkaProducer(bootstrap_servers=['localhost:9092'])
 for d in data:
  producer.send('test', key=b'lxs', value=d)
  time.sleep(5)
  print(d)
 
 while True:
  producer.send('test', key=b'lxs', value=data)
  time.sleep(5)
  print(data)
 
if __name__== '__main__':
 # unittest.main()
 
 B=HbaseOpreator('10.27.1.138',9090)
 value=B.scanTablefilter('ns_lbi:test_hbase_student')
 print(value)
 #sendKfafkaProduct(value)

以上这篇python hbase读取数据发送kafka的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现测试磁盘性能的方法
Mar 12 Python
Python发送以整个文件夹的内容为附件的邮件的教程
May 06 Python
详解Python的Django框架中inclusion_tag的使用
Jul 21 Python
两个使用Python脚本操作文件的小示例分享
Aug 27 Python
深入解析Python中的上下文管理器
Jun 28 Python
python中numpy.zeros(np.zeros)的使用方法
Nov 07 Python
Python Flask基础教程示例代码
Feb 07 Python
Flask框架响应、调度方法和蓝图操作实例分析
Jul 24 Python
对tensorflow 的模型保存和调用实例讲解
Jul 28 Python
Python简单I/O操作示例
Mar 18 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
May 23 Python
Python CSV文件模块的使用案例分析
Dec 21 Python
Python类和对象的定义与实际应用案例分析
Dec 27 #Python
在python环境下运用kafka对数据进行实时传输的方法
Dec 27 #Python
kafka-python批量发送数据的实例
Dec 27 #Python
Python闭包思想与用法浅析
Dec 27 #Python
对python操作kafka写入json数据的简单demo分享
Dec 27 #Python
python消费kafka数据批量插入到es的方法
Dec 27 #Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 #Python
You might like
PHP 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
List Installed Software Features
2007/06/11 Javascript
NodeJS url验证(url-valid)的使用方法
2013/11/18 NodeJs
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
node thread.sleep实现示例
2018/06/20 Javascript
Vue路由钩子之afterEach beforeEach的区别详解
2018/07/15 Javascript
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
javascript实现切割轮播效果
2019/11/28 Javascript
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
python冒泡排序算法的实现代码
2013/11/21 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
解决Django连接db遇到的问题
2019/08/29 Python
wxPython实现画图板
2020/08/27 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
Python PyQt5模块实现窗口GUI界面代码实例
2020/05/12 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
编辑求职信样本
2013/12/16 职场文书
部队党性分析材料
2014/02/16 职场文书
宣传部部长竞选演讲稿
2014/04/26 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
坚持不是死撑,更重要的是心态
2019/08/19 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android