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压平嵌套列表的简单实现
Jun 08 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
Jul 24 Python
浅析Python 中几种字符串格式化方法及其比较
Jul 02 Python
selenium中get_cookies()和add_cookie()的用法详解
Jan 06 Python
Python 读取WAV音频文件 画频谱的实例
Mar 14 Python
Python count函数使用方法实例解析
Mar 23 Python
django实现模板中的字符串文字和自动转义
Mar 31 Python
详解Python GUI编程之PyQt5入门到实战
Dec 10 Python
Python修改DBF文件指定列
Dec 19 Python
让文件路径提取变得更简单的Python Path库
May 27 Python
解决pytorch读取自制数据集出现过的问题
May 31 Python
python中如何对多变量连续赋值
Jun 03 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
使用eAccelerator加密PHP程序
2008/10/03 PHP
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
javascript 类型判断代码分析
2010/03/28 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
Javascript表单验证要注意的事项
2014/09/29 Javascript
jquery实现图片上传之前预览的方法
2015/07/11 Javascript
jquery实现select选择框内容左右移动代码分享
2015/11/21 Javascript
jQuery Easyui 下拉树组件combotree
2016/12/16 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
Angular4开发解决跨域问题详解
2017/08/28 Javascript
vue使用websocket的方法实例分析
2019/06/22 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python利用拉链法实现字典方法示例
2017/03/25 Python
在windows下Python打印彩色字体的方法
2018/05/15 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
python关于变量名的基础知识点
2020/03/03 Python
AmazeUI的下载配置与Helloworld的实现
2020/08/19 HTML / CSS
名人珠宝设计师:Melinda Maria Jewelry
2019/03/06 全球购物
小加工厂管理制度
2014/01/21 职场文书
梅花魂教学反思
2014/04/25 职场文书
小学社会实践活动总结
2014/07/03 职场文书
行政管理专业求职信
2014/07/06 职场文书
房产公证委托书范本
2014/09/20 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书
不尊敬老师的检讨书
2014/12/21 职场文书
民事起诉状范文
2015/05/19 职场文书
pytorch 运行一段时间后出现GPU OOM的问题
2021/06/02 Python
java实现web实时消息推送的七种方案
2022/07/23 Java/Android