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的动态重新封装的教程
Apr 11 Python
Python实现多线程抓取妹子图
Aug 08 Python
Python使用pylab库实现画线功能的方法详解
Jun 08 Python
python numpy和list查询其中某个数的个数及定位方法
Jun 27 Python
pandas中DataFrame修改index、columns名的方法示例
Aug 02 Python
python线程安全及多进程多线程实现方法详解
Sep 27 Python
基于Python生成个性二维码过程详解
Mar 05 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
Django使用rest_framework写出API
May 21 Python
Python数据相关系数矩阵和热力图轻松实现教程
Jun 16 Python
解决python中0x80072ee2错误的方法
Jul 19 Python
Python基于Webhook实现github自动化部署
Nov 28 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
PHP验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
PHP实现下载功能的代码
2012/09/29 PHP
如何用php获取文件名后缀
2013/06/09 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
php中运用http调用的GET和POST方法示例
2014/09/29 PHP
PHP框架Laravel的小技巧两则
2015/02/10 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
2015/07/31 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
2015/10/21 PHP
php中序列化与反序列化详解
2017/02/13 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
JavaScript入门教程之引用类型
2016/05/04 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
2016/10/14 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
VueJS 组件参数名命名与组件属性转化问题
2018/12/03 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
详解Vue的ref特性的使用
2020/01/24 Javascript
[43:57]Liquid vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python中二维阵列的变换实例
2014/10/09 Python
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
如何使用pandas读取txt文件中指定的列(有无标题)
2020/03/05 Python
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
美国机场停车位预订:About Airport Parking
2018/03/26 全球购物
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
《盘古开天地》教学反思
2014/02/28 职场文书
小学生操行评语
2014/04/22 职场文书
小学生植树节活动总结
2014/07/04 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
就业推荐表院系意见
2015/06/05 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
创业开店,这样方式更合理
2019/08/26 职场文书
python自动化测试之Selenium详解
2022/03/13 Python