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安装第三方库的3种方法
Jun 21 Python
使用Python的Scrapy框架十分钟爬取美女图
Dec 26 Python
酷! 程序员用Python带你玩转冲顶大会
Jan 17 Python
Python KMeans聚类问题分析
Feb 23 Python
Python抽象和自定义类定义与用法示例
Aug 23 Python
解决pyttsx3无法封装的问题
Dec 24 Python
详解Python流程控制语句
Oct 28 Python
python 操作excel表格的方法
Dec 05 Python
python中_del_还原数据的方法
Dec 09 Python
python中str内置函数用法总结
Dec 27 Python
浅谈Python类的单继承相关知识
May 12 Python
详解Python+OpenCV绘制灰度直方图
Mar 22 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操作数组的一些函数整理介绍
2011/07/17 PHP
用JavaScript脚本实现Web页面信息交互
2006/10/11 Javascript
MooTools 1.2介绍
2009/09/14 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
2015/09/06 Javascript
基于insertBefore制作简单的循环插空效果
2015/09/21 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
JS实现水平遍历和嵌套递归操作示例
2019/08/15 Javascript
vue使用map代替Aarry数组循环遍历的方法
2020/04/30 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
Python交换变量
2008/09/06 Python
深入理解Python 代码优化详解
2014/10/27 Python
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
Python3 操作符重载方法示例
2017/11/23 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
django 中QuerySet特性功能详解
2019/07/25 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
python Gabor滤波器讲解
2020/10/26 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
劳动竞赛活动总结
2014/05/05 职场文书
助残日活动总结
2014/08/27 职场文书
信用卡工资证明范本
2014/10/17 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
python基础入门之普通操作与函数(三)
2021/06/13 Python
MySQ InnoDB和MyISAM存储引擎介绍
2022/04/26 MySQL
配置nginx负载均衡
2022/05/06 Servers