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的lambda匿名函数的简单介绍
Apr 25 Python
Python下的Mysql模块MySQLdb安装详解
Apr 09 Python
探索Python3.4中新引入的asyncio模块
Apr 08 Python
numpy.delete删除一列或多列的方法
Apr 03 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
Nov 06 Python
对Python3.x版本print函数左右对齐详解
Dec 22 Python
Python3实现统计单词表中每个字母出现频率的方法示例
Jan 28 Python
Python实现代码统计工具
Sep 19 Python
如何关掉pycharm中的python console(图解)
Oct 31 Python
python将三维数组展开成二维数组的实现
Nov 30 Python
pytorch点乘与叉乘示例讲解
Dec 27 Python
Python 如何对文件目录操作
Jul 10 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
JAVA/JSP学习系列之七
2006/10/09 PHP
PHP中对数据库操作的封装
2006/10/09 PHP
php 从数据库提取二进制图片的处理代码
2009/09/09 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
php获取汉字拼音首字母的方法
2015/10/21 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
javascript XML数据显示为HTML一例
2008/12/23 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
2012/03/14 Javascript
javascript window.confirm确认 取消对话框实现代码小结
2012/10/21 Javascript
JavaScript限定复选框的选择个数示例代码
2013/08/25 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
分享五个有用的jquery小技巧
2015/10/08 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
vue实现一个炫酷的日历组件
2018/10/08 Javascript
VuePress 快速踩坑小结
2019/02/14 Javascript
vue.js高德地图实现热点图代码实例
2019/04/18 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
Python的消息队列包SnakeMQ使用初探
2016/06/29 Python
python入门基础之用户输入与模块初认识
2016/11/14 Python
Python检测网络延迟的代码
2018/05/15 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
Python 解码Base64 得到码流格式文本实例
2020/01/09 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
Html5新增标签有哪些
2017/04/13 HTML / CSS
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
酷瑞网络科技面试题
2012/03/30 面试题
应用数学专业求职信
2014/03/14 职场文书
毕业生就业推荐表自我鉴定
2014/03/20 职场文书
党性分析材料格式
2014/12/19 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
2015年音乐教师个人工作总结
2015/05/20 职场文书
离婚案件原告代理词
2015/05/23 职场文书