python hbase读取数据发送kafka的方法
作者:meiguopai1 发布时间:2023-09-07 14:39:46
标签:python,hbase,kafka
本例子实现从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)
来源:https://blog.csdn.net/meiguopai1/article/details/70175069


猜你喜欢
- 一、代码示例 window.open(url,'新窗口','width='+(window.screen.a
- ASP.net与SQLite数据库通过js和ashx交互(连接和操作):废话(也是思路):用的是VS2010,打算做网站前后台。由于不喜欢前
- 本文实例讲述了Python提示[Errno 32]Broken pipe导致线程crash错误解决方法。分享给大家供大家参考。具体方法如下:
- 程序设计是困难的,其核心是管理的复杂性。计算机程序是人类做出的最复杂的东西。质量是不可靠的且隐蔽的。好的体系架构是必需给程序足够的结构使其健
- (一)问题遗传算法求解正方形拼图游戏(二)代码#!/usr/bin/env python# -*- coding: utf-8 -*-fro
- 本文实例为大家分享了python实现学生信息管理系统的具体代码,含代码注释、增删改查、排序、统计显示学生信息,供大家参考,具体内容如下运行如
- 脚本内容代码如下:from mitmproxy import http, ctxfrom multiprocessing import Lo
- 最近,使用 golang 去管理本地应用的生命周期,期间有几个有趣的点,今天就一起看下。场景一我们来看看下面两个脚本会产
- 感觉这个东西很常用,很多其它js框架里有,但是太大了,用不了太多,自己写了个。需要的朋友可以参考下。下面是html测试代码:<!DOC
- 这里不跟大家再去把Vue文档上的一些指令用法或者基础知识再复述一遍,既然是从入门到实战,我直接将平时项目中需要实现的一些效果拆分成模块。你们
- 目前,计算机上主流的操作系统有Windows、Unix、Mac OS等,os模块为多操作系统的访问提供了相关功能的支持,涉及对文件相关操作功
- 一、插件是什么?插件是遵循一定规范的应用程序接口编写出来的程序,而chrome插件则是运行在chrome浏览器上的小程序,能帮我们解决一下工
- 下面先来看看例子:table表字段1 字段2 i
- 首先让我们来看看有关 Perl 面向对象编程的三个基本定义:1. 一个“对象”是指一个“有办法知道它是属于哪个类”的简单引用。(
- 本文实例为大家分享了微信小程序实现计算器的具体代码,供大家参考,具体内容如下1、实现效果图2、代码编写index.wxml<!--au
- 本文实例讲述了MySQL中使用replace、regexp进行正则表达式替换的用法。分享给大家供大家参考,具体如下:今天一个朋友问我,如果将
- vue-i18n 仓库地址:https://github.com/kazupon/vue-i18n兼容性:支持 Vue.js 2.x 以上版
- 本文实例为大家分享了python开发飞机大战游戏的具体代码,供大家参考,具体内容如下import pygameimport randomim
- 前言:python多进程,经常在使用,却没有怎么系统的学习过,官网上面讲得比较细,结合自己的学习,整理记录下官网:https://docs.
- 如下所示:# -*- coding:utf-8 -*-import sysreload(sys)sys.setdefaultencoding