HBase的Python API(happybase)操作

一、Windows下安装Python库:happybase

pip install happybase -i https://pypi.tuna.tsinghua.edu.cn/simple

二、 开启HBase的Thrift服务

想要使用Python API连接HBase,需要开启HBase的Thrift服务。所以,在Linux服务器上,执行如下命令,开启HBase的Thrfit服务。

# 安装Thrift服务所需要的一系列依赖软件
yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel openssl-devel
# 进入hbase安装目录下的bin目录
cd /usr/local/hbase-2.5.6/bin
#启动Thrift
hbase-daemon.sh start thrift
#jps查看进程
jps

至此启动Thrift服务并安装了HappyBase库后,即可用python代码连接HBase了。

注意:HBase Thrift的端口默认在9090 。 

三、使用python连接HBase

(1)在pycharm新建一个pythonProject项目。

(2)在pythonProject项目下新建一个python文件,编写连接Hbase的python代码。

#1.导入happybase库
import happybase
#2.建立HBase的连接
conn = happybase.Connection(host="192.168.25.200",   #主机名port=9090,      #Thrift的默认端口号timeout=60000   #超时时间
)
#3.通过conn对象,调用tables方法,获取hbase中的表格
print(conn.tables())
#4.关闭连接
conn.close()

注意:如果运行结果报错显示无法连接到虚拟机节点,则需要检查你的虚拟机是否已经关闭防火墙,如果防火墙为开启状态,需要关闭防火墙:systemctl stop firewalld.service 。

四、任务需求分析及HBase表格设计

(1)需求说明

某某自来水公司,需要存储大量的缴费明细数据。以下截取了缴费明细的一部分内容:

我们有如上数据集,需要将其导入到HBase中即可,具体数据集文件存放在百度网盘:

链接:https://pan.baidu.com/s/14n-2XoXyxZL7hN80cNTJMw 
提取码:qavu

(2)HBase表格设计

表名:WATER_BILL
行键(RowKey)列族:user列族:order
列限定符单元格值列限定符单元格值
4944191name登卫红pay_time2020-5-10
4944191addr贵州省铜仁市德江县7单元267室current_count308.1
4944191sexlast_count283.1
4944191usage25
4944191total_money150
4944191check_date2020-4-25
4944191latest_pay_date2020-6-9
................

 五、使用Python API创建HBase表格

'''
水表业务:
Hbase表格的创建
'''
#导入happybase库
import happybase
#构建Hbase的连接
conn = happybase.Connection(host = "192.168.25.200",  #主机IPport = 9090
)
#设置水费表格的名称为WATER_BILL(注意:在HBase API代码中,数据都是以Bytes字节数组的形式操作)
table_name = b"WATER_BILL"
#创建表格WATER_BILL(先检查表格是否存在,不存在则创建)
#通过conn连接对象的tables()可以获取全部的表格
tbs = conn.tables()
#if判断table_name是否在tbs中
if table_name in tbs:print(f"{table_name}已存在,无需创建")
else:print(f"{table_name}不存在,请创建它。")conn.create_table(table_name.decode(),     #将字节字符串转为普通字符串{'user':dict(max_versions = 5),  #列族信息'order':dict()                 #列族信息})
#打印当前的表格信息
print(f"当前的表格:{conn.tables()}")
#关闭连接
conn.close()

六、使用Python API插入数据

#导入happybase库
import happybase
#构建Hbase的连接
conn = happybase.Connection(host = "192.168.25.200",  #主机IPport = 9090
)
#往"WATER_BILL"表格内插入数据(读取文件的每行数据)
water_table = conn.table("WATER_BILL")
for line in open("WATER_BILL.TSV",encoding="UTF-8"):line = line.replace("\n","")# print(line)arrs = line.split('\t')# print(arrs)rowkey = arrs[0].encode()#行键data = {b'user:name':arrs[1].encode(),b'user:addr': arrs[2].encode(),b'user:sex': arrs[3].encode(),b'order:pay_time': arrs[4].encode(),b'order:current_count': arrs[5].encode(),b'order:last_count': arrs[6].encode(),b'order:usage': arrs[7].encode(),b'order:total_money': arrs[8].encode(),b'order:check_date': arrs[9].encode(),b'order:latest_pay_time': arrs[10].encode(),}water_table.put(rowkey,data)

七、使用Python API查询数据

#1.导入happybase库
import happybase
#2.建立HBase的连接
conn = happybase.Connection(host="192.168.25.200",   #主机名port=9090,      #Thrift的默认端口号timeout=60000   #超时时间
)
#3.通过conn对象,调用table方法,获取WATER_BILL表格
water_table = conn.table('WATER_BILL')
#查询数据
row = water_table.row(b'9054826')
# print(row)
# print(type(row))
for key in row.keys():print(f"列族:列限定符:{key.decode()},value:{row[key].decode()}")
#4.关闭连接
conn.close()

八、使用Python API删除数据

#导入happybase库
import happybase
#构建Hbase的连接
conn = happybase.Connection(host = "192.168.25.200",  #主机IPport = 9090
)
#获取表格对象
water_table = conn.table('WATER_BILL')
#删除表格的指定子列数据
water_table.delete(b'9054826',columns=[b'user:sex',b'order:usage'])
#删除表格的某一行数据(一个rowkey)
water_table.delete(b'9054826')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/776009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

香港高才通计划abc类的申请材料各不同,附官方续签攻略!

香港高才通计划abc类的申请材料各不同,附官方续签攻略! 作为香港“史上最快获批签证”,高才通计划受到内地精英的热烈欢迎,香港高才通于2022年12月28日开放申请,截至2023年12月31日,香港高才通计划已接获62…

android 11 SystemUI 状态栏打开之后的界面层级关系说明之一

比如WiFi 图标的父layout为: Class Name: ButtonRelativeLayout Class Name: QSTileView Class Name: TilePage Class Name: PagedTileLayout Class Name: QSPanel Class Name: NonInterceptingScrollView Class Name: QSContainerImpl Class Name: FrameLayout Cl…

37.网络游戏逆向分析与漏洞攻防-游戏网络通信数据解析-解码器细化类的实现

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 内容参考于:易道云信息技术研究院VIP课 上一个内容:36.数据解码器的…

Docker进阶:Docker-compose 实现服务弹性伸缩

Docker进阶:Docker-compose 实现服务弹性伸缩 一、Docker Compose基础概念1.1 Docker Compose简介1.2 Docker Compose文件结构 二、弹性伸缩的原理和实现步骤2.1 弹性伸缩原理2.2 实现步骤 三、技术实践案例3.1 场景描述3.2 配置Docker Compose文件3.3 使用 docker-…

今天起,Windows可以一键召唤GPT-4了

现在,OpenAI 大模型加持的 Copilot 功能终于登陆 Windows 了。 把 Copilot 按钮放在 Windows 桌面的任务栏,甚至实体键盘上,用大模型提升每个人的生产效率。 美东时间 3 月 21 日周四,生成式 AI 领军的微软又为我们带来了一点小…

Web系统开发之——文章管理

原文地址:Web系统开发之——文章管理 - Pleasure的博客 下面是正文内容: 前言 经过一番考量,关于Web应用系统功能部分的开发,决定采取基础的文字文章管理为核心功能。 不再采取前后端分阶段完成的方式,而是以一个一个…

【QT入门】 QTabWidget各种常见用法详解

往期回顾: 【QT入门】 Qt代码创建布局之分裂器布局详解-CSDN博客 【QT入门】 Qt代码创建布局之setLayout使用-CSDN博客 【QT入门】 Qt代码创建布局之多重布局变换与布局删除技巧-CSDN博客 【QT入门】 QTabWidget各种常见用法详解 一般来说,学一个新的控…

报错there is no HDFS_NAMENODE_USER defined

在Hadoop安装目录下找到sbin文件夹,修改里面的四个文件 1、对于start-dfs.sh和stop-dfs.sh文件,添加下列参数: HDFS_DATANODE_USERroot HDFS_DATANODE_SECURE_USERhdfs HDFS_NAMENODE_USERroot HDFS_SECONDARYNAMENODE_USERroot 2、对于st…

2024-2029年中国中子探测器行业市场深度调研及发展前景预测报告

中子探测器可应用范围广泛 全球市场规模持续扩大 中子探测器,是一种检测中子辐射的仪器,采用中子吸收材料,利用中子与材料相互作用,来检测是否存在中子以及中子能量强度。中子是不带电荷的粒子,无法利用电离辐射探测器…

20221124 kafka实时数据写入Redis

一、上线结论 实现了将用户线上实时浏览的沉浸式视频信息,保存在Redis中这样一个功能。为实现沉浸式视频离线推荐到实时推荐提供了强有力的支持。目前只是应用在沉浸式场景,后续也能扩展到其他所有场景。用于两个场景:(1&#xf…

2024年天津财经大学珠江学院退役大学生士兵专升本专业课报名须知

天津财经大学珠江学院2024年高职升本科(面向退役大学生士兵)职业技能综合考查报考须知 一、报名条件 报考天津财经大学珠江学院2024年高职升本科职业技能综合考查的退役大学生士兵应符合天津市及我院规定的报考资格。考生须完成天津市高职升本科文化考…

数据结构/C++:位图 布隆过滤器

数据结构/C:位图 & 布隆过滤器 位图实现应用 布隆过滤器实现应用 哈希表通过映射关系,实现了O(1)的复杂度来查找数据。相比于其它数据结构,哈希在实践中是一个非常重要的思想,本博客将介绍哈希思想的两大应用,位图…

HTTPS:原理、使用方法及安全威胁

文章目录 一、HTTPS技术原理1.1 主要技术原理1.2 HTTPS的工作过程1.2.1 握手阶段1.2.2 数据传输阶段 1.3 CA证书的签发流程1.4 HTTPS的安全性 二、HTTPS使用方法三、HTTPS安全威胁四、总结 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket …

git提交-分支开发合并-控制台操作

git提交-分支开发合并-控制台操作 git的基本概念工作区、暂存区和版本库工作区:就是你在电脑里能看到的目录(隐藏目录 .git不算工作区)。暂存区:英文叫 stage 或 index。一般存放在本地的.git目录下的index 文件(.git/…

036—pandas 按行将列名根据值由大到小排序

前言 数据处理中,按行排列的列名可以提供更直观的数据探索和分析方式。 你可以逐行查看列名,了解每列的含义和特征,有助于更好地理解数据集的结构和内容。 需求: 需要增加一列「分布方式」,每行的值是本行基金名称对…

双指针算法:三数之和

文章目录 一、[题目链接&#xff1a;三数之和](https://leetcode.cn/problems/3sum/submissions/515727749/)二、思路讲解三、代码演示 先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;^ _ ^<3 ❤️ ❤️ ❤️ 码字不易&#xff0c;大家的支持就是我坚持…

对BSV区块链网络访问规则NAR通俗易懂的解释

​​发表时间&#xff1a;2024年2月21日 我们可以把BSV区块链网络想象成在公园里举办的一场大型公共足球比赛。虽然这是一场友谊赛&#xff0c;但在比赛前&#xff0c;每个人都要理解并同意基本规则。举例来说&#xff0c;除了守门员之外&#xff0c;任何球员不得用手触球。 在…

JetBrains全家桶激活,分享 WebStorm 2024 激活的方案

大家好&#xff0c;欢迎来到金榜探云手&#xff01; WebStorm公司简介 JetBrains 是一家专注于开发工具的软件公司&#xff0c;总部位于捷克。他们以提供强大的集成开发环境&#xff08;IDE&#xff09;而闻名&#xff0c;如 IntelliJ IDEA、PyCharm、和 WebStorm等。这些工具…

【动手学深度学习】深入浅出深度学习之线性神经网络

目录 &#x1f31e;一、实验目的 &#x1f31e;二、实验准备 &#x1f31e;三、实验内容 &#x1f33c;1. 线性回归 &#x1f33b;1.1 矢量化加速 &#x1f33b;1.2 正态分布与平方损失 &#x1f33c;2. 线性回归的从零开始实现 &#x1f33b;2.1. 生成数据集 &#x…