设为首页 加入收藏

TOP

大数据系列之实时计算Spark(十七)Python与Hbase整合
2019-05-07 13:43:02 】 浏览:71
Tags:数据 系列 实时 计算 Spark 十七 Python Hbase 整合
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011444062/article/details/81777828

1.准备工作(所用到的工具库会放在最后供下载使用)

1.1.安装thrift

cmd>pip install thrift

我使用的是Anaconda3,下载下来的包会存放到 /Lib/site-packages/目录下,如果没有使用Anaconda3,那把如下的两个文件夹直接放到python安装目录/Lib/site-packages/下即可

1.2.将hbase(再后面可以下载,hbase目录下是python与hbase链接所使用的库)文件夹复制到当前工程目录下

1.3.启动hbase集群

1.4.启动hbase的thriftserver,满足和第三方应用通信

$>hbase-daemon.sh start thrift2

查看webui:http://s10:9095/ //webui端口
//9090 rpc端口

1.5代码:

# -*- coding: utf-8 -*-
# python操作hbase
import os
# 导入thrift的python模块
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
#导入编译生成的hbase 模块
from com.py.spark.hbase import THBaseService
from com.py.spark.hbase.ttypes import *
#hbase的thrift服务器地址s10:9090
from com.py.spark.hbase.ttypes import TGet

transport = TSocket.TSocket('s10', 9090)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = THBaseService.Client(protocol)
#开启连接,准备传输数据
transport.open()
# #get查询
table = b'ns1:t1'    #定义表名
rowkey=b'row9998'          #定义rowkey
col_id=TColumn(b"f1",b"id")
col_name = TColumn(b"f1",b"name")
col_age = TColumn(b"f1",b"age")
cols = [col_id,col_name,col_age]
get = TGet(rowkey,cols)#创建get对象
res=client.get(table,get)
# 最后输出的结果是排序的
print(bytes.decode(res.columnValues[0].family))
print(bytes.decode(res.columnValues[0].qualifier))
print(bytes.decode(res.columnValues[0].value))
print(res.columnValues[0].timestamp)
print(bytes.decode(res.columnValues[1].family))
print(bytes.decode(res.columnValues[1].qualifier))
print(bytes.decode(res.columnValues[1].value))
print(res.columnValues[1].timestamp)
print(bytes.decode(res.columnValues[2].family))
print(bytes.decode(res.columnValues[2].qualifier))
print(bytes.decode(res.columnValues[2].value))
print(res.columnValues[2].timestamp)
# put操作
table =b'ns1:t1'
row=b'row10000'
v1=TColumnValue(b'f1',b'id',b'10000')
v2=TColumnValue(b'f1',b'name',b'zpx')
v3=TColumnValue(b'f1',b'age',b'25')
vals=[v1,v2,v3]
put=TPut(row,vals)
client.put(table,put)
print("okkkk!!")
# 删除
# delete
table =b'ns1:t1'
rowkey=b'row10000'
col_id = TColumn(b"f1", b"id")
col_name = TColumn(b"f1", b"name")
col_age = TColumn(b"f1", b"age")
cols = [col_id, col_name,col_age]

#构造删除对象
delete = TDelete(rowkey,cols)
res = client.deleteSingle(table, delete)
# print("ok")
#扫描scan
#scan
table=b'ns1:t1'
startRow=b'row9900'
stopRow=b'row9998'
col_id = TColumn(b"f1", b"id")
col_name = TColumn(b"f1", b"name")
col_age = TColumn(b"f1", b"age")
cols = [col_id, col_name,col_age]
scan=TScan(startRow=startRow,stopRow=stopRow,columns=cols)
r=client.getScannerResults(table,scan,100)
for x in r:
    print("====================")
    print(bytes.decode(x.columnValues[2].family))
    print(bytes.decode(x.columnValues[2].qualifier))
    print(bytes.decode(x.columnValues[2].value))
    print(x.columnValues[2].timestamp)




链接:https://pan.baidu.com/s/1dYY56Sbo_ZZ3lwlRiP5nAw 密码:akky

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Hbase中表与Phoenix表建立关联关系 下一篇hbase的java API基本操作大全

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目