happybase基本操作方法

一、准备工作

(1)windows下安装happybase库:

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

(2)确保HDFS、Hbase、Zookeeper服务正常运行:

        启动HDFS命令:start-dfs.sh

        启动HBase和Zookeeper命令:start-hbase.sh

二、开启thrift

# 进入hbase安装目录下的bin目录
cd /usr/local/hbase-2.5.6/bin
#启动Thrift
hbase-daemon.sh start thrift
#jps查看进程
jps
[root@hadoop~]# jps
1556 HRegionServer
485 SecondaryNameNode
230 NameNode
1400 HMaster
1993 ThriftServer
1114 HQuorumPeer
2111 Jps
3514 DataNode

 三、happybase操作教程

(1)创建连接

#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 

 (2)创建表

conn.create_table('mytable',						# 表名,字符串类型{'cf1': dict(max_versions=10),	# 列族1'cf2': dict(max_versions=1),	# 列族2'cf3': dict(),               	# 列族3,默认属性}
)
# 通常,管理HBase,建议使用HBase Shell,因为HappyBase使用的Thrift接口仅有有限功能。

(3)获取表对象

table = conn.table('mytable')	# 传入表名
# 表不存在也不会报错,本步骤不会真的链接到HBase,只是在代码内创建一个table对象

(4)查询单行数据 

table.row()从表中检索单行,并将其作为映射列到值的字典返回。

row = table.row(b'rk0001')
print(row[b'info:name'])   # prints the value of info:name
# 返回值:b'zhangsan',注意是二进制<class 'bytes'>类型
# 转换字符串:
print(str(row[b'info:name'], encoding="utf-8"))
# 即
str(bytes对象, encoding="编码格式,通常使用utf-8")

(5)查询多行数据 

table.rows() 方法的工作方式与table.row() 类似,但需要多个行键并将它们作为 (key, data) 元组返回。

rows = table.rows([b'rk0001', b'rk0002'])
for key, data in rows:print(key, data)"""
返回值:
b'rk0001' {b'data:pic': b'picture', b'info:age': b'20', b'info:gender': b'female', b'info:name': b'zhangsan'}
b'rk0002' {b'data:pic': b'picture', b'info:age': b'11', b'info:gender': b'male', b'info:name': b'wangwu'}注意哦,key是bytes对象
data是字典对象,字典中key和value都是bytes
"""

(6)获取多版本数据

HBase支持存储同一单元的多个版本。这可以为每个列族配置。要检索给定行的列的所有版本,可以使用 table.cells()。此方法返回一个有序的单元格列表,最新版本排在最前面。  

# 首先,准备一个保存多版本的表
create 'tv', {NAME => 'info', VERSIONS => 5}
# 插入版本1
put 'tv', 'rk0001', 'info:name', 'hahaha'
# 插入版本2
put 'tv', 'rk0001', 'info:name', 'heiheihei'# 检查
hbase(main):024:0> scan 'tv'
ROW                          COLUMN+CELL                                                                       rk0001                      column=info:name, timestamp=1641836267655, value=heiheihei                        
1 row(s)
Took 0.0103 seconds
table = conn.table('tv')
# 获取1个版本(默认最新咯)
values = table.cells(b'rk0001', b'info:name', versions=1)
print(type(values))
print(values)"""
返回值:
<class 'list'>
[b'heiheihei']
"""
# 获取2个版本
values = table.cells(b'rk0001', b'info:name', versions=2)
print(type(values))
print(values)"""
返回值:
<class 'list'>
[b'heiheihei', b'hahaha']
可见,2个版本都获取了,按照顺序,第一个最新
"""

(7)scan表格数据

 除了检索已知行键的数据外,HBase 中的行还可以使用使用 table.scan() 创建的表扫描器有效地迭代。遍历表中所有行的基本扫描程序如下所示。

rows = table.scan()
print(type(rows))	# <class 'generator'>
print(rows)			# <generator object Table.scan at 0x0000024E8AA2CD60>
print(list(rows))	# 将generator类型强转为list: [(b'rk0001', {b'info:name': b'heiheihei'})]rows = table.scan()
for row in rows:print(type(row))	# <class 'tuple'>print(row)			# (b'rk0001', {b'info:name': b'heiheihei'})

 (8)插入数据

要在我们的表中存储单个单元格的数据,我们可以使用table.put(),它接收行键和要存储的数据。数据应该是一个字典,将列名映射到一个值:

table = connection.table('user')
table.put(b'rk0003', {b'info:name': b'wangdacui',b'info:age': b'11'})

 (9)删除数据

table.delete() 方法从表中删除数据。要删除完整的行,只需指定行键:

table.delete(b'rk0004')

要删除一列或多列而不是整行,还需指定 columns 参数:

table = connection.table('user')
table.put(b'rk0004', {b'info:name': b'zhangdasan',b'info:age': b'11', b'info:pic': b'pic'})
table.delete(b'rk0004', columns=[b'info:age', b'info:pic'])

 

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

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

相关文章

【数据结构 | 图论】如何用链式前向星存图(保姆级教程,详细图解+完整代码)

一、概述 链式前向星是一种用于存储图的数据结构&#xff0c;特别适合于存储稀疏图&#xff0c;它可以有效地存储图的边和节点信息&#xff0c;以及边的权重。 它的主要思想是将每个节点的所有出边存储在一起&#xff0c;通过数组的方式连接&#xff08;类似静态数组实现链表…

多线程实现Scheduler定时任务

在Spring框架中&#xff0c;Scheduled注解用于标记一个方法作为定时任务&#xff0c;它使用cron表达式来定义任务的执行频率。对于cron表达式定义的定时任务&#xff0c;如果上一个任务的执行还没有完成&#xff0c;下一个任务的执行行为取决于你使用的调度器&#xff08;sched…

C语言多服务器多播组网框架

使用技术: UDP ipv4 禁止本地回环 允许端口复用 超时等待 限制跳点 Echo 功能描述: 任意endpoint可主动发送多播,也可以收到信息后自动多播 前期准备: 开启操作系统多播广播功能,关闭系统防火墙,使用物理路由还需在路由开启广播多播功能 发送端和接收端运行不分先后 可无…

慧天【HTWATER】:水文水动力模型的革命性工具,城市内涝的精准解决方案

城市内涝水文水动力模型介绍 在城市排水防涝规划过程中&#xff0c;水文水动力耦合模型已经成为一种不可或缺的分析工具。在模型建立、城市内涝风险评估、排水系统性能诊断以及海绵城市规划等方面&#xff0c;内涝耦合模型提供了相应的模拟及分析工具&#xff1a; 1.1丰富的数…

Coding构建SSh登录教程

SSH 命令行 (Jenkins 原生) 持续集成中的 SSH 命令行插件通常用于授权构建机登录云服务器执行相应的命令与任务。通过 SSH 命令行插件&#xff0c;构建机可以针对云服务器执行以下操作&#xff1a; 将构建机上的文件推送到云主机&#xff1b; 将云主机上的文件拉取至构建机上&…

前端学习<二>CSS基础——09-CSS案例讲解:博雅互动

前言 CSS已经学了一些基础内容了&#xff0c;我们来讲解一个小案例吧。以博雅互动的官网首页举例。 版心 首页的版心如下&#xff1a; 这里我们要普及一个概念&#xff0c;叫“版心”。版心是页面中主要内容所在的区域。 比如说&#xff0c;网站左上角的logo&#xff0c;设计…

Flutter 开发学习笔记(0):环境配置

文章目录 前言开发需求环境配置运行出现问题我运行也是解决了很久的问题镜像源设置为清华的镜像源&#xff08;不知道有没有影响&#xff09;使用JDK21&#xff0c;JDK版本不能低于JDK11手动下载flutter 对应的gradle 运行成功&#xff01; 前言 我最近一直在用Uniapp写代码&a…

vmware,linux,centos7,NAT模式下的网络配置

centos7的NAT网络配置 NAT模式说明虚拟机网络配置工具本机配置net8网络&#xff08;NAT的网域&#xff09;本机的IP配置(用于net8局域网内解析主机IP和域名对应关系使用)&#xff08;可选&#xff09;虚拟机内的网络配置虚拟机ping不通www.baidu.com的情况下虚拟机ping可以ping…

ESP32 433mhz

从抖音抄了一大神的Arduino代码 # include <RCwitch.h> ///调用RC开关函数库 RCSwitch mySwitch RCSwitch(); //增加一个RC开关并设置名称 const int FRR 15; / 设置315MHz 无限模块的接受管脚 void setup(){Serial.begin(115200); //打开串口i设置波特率115200mySw…

ARM64架构栈帧以及帧指针FP

文章目录 前言一、arm64架构寄存器简介1.1 异常等级1.2 通用寄存器1.3 ARM64架构ABI 二、ARM64架构函数调用标准2.1 AArch64过程调用标准简介2.2 通用寄存器中的参数 三、demo分析3.1 main函数3.2 funb3.3 funa 四、栈帧总结五、demo演示参考资料 前言 这篇文章描述了 x86_64架…

智过网:一建36岁好不好找工作?能干什么?

在职业发展的道路上&#xff0c;许多人在不同的年龄阶段都会面临不同的挑战和机遇。对于36岁这一年龄阶段的人来说&#xff0c;如果已经通过了国家一级建造师&#xff08;一建&#xff09;的考试&#xff0c;那么他们在找工作方面会有怎样的前景呢&#xff1f;又能从事哪些职业…

气象预测新篇章:Python人工智能的变革力量

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能&#xff0c;这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…

C#程序结构详解

目录 背景: 一、C#程序的基本组成部分 二、C# Hello World示例 三、程序结构解析 四、编译与执行C#程序 五、总结 背景: 在学习C#编程语言的过程中&#xff0c;了解程序的基本结构是非常重要的。C#程序由多个组成部分构成&#xff0c;每个部分都有其特定的功能和作用。下面…

20.变量的使用方式和注意事项

文章目录 一、变量的用法二、变量的注意事项三、总结 一、变量的用法 代码示例 public static void main(String[] args) {//1.基本用法// 定义变量&#xff0c;再进行输出int a 10;System.out.println(a);// 10System.out.println(a);// 10//2.变量参与计算int b 30;int c …

代码随想录学习Day 21

回溯算法理论基础 回溯法又叫回溯搜索法。回溯是递归的副产品&#xff0c;有递归就会有回溯&#xff0c;回溯操作一般出现在递归函数的下面。回溯函数 递归函数。回溯法的本质是穷举。 回溯法解决的问题&#xff1a; 组合问题&#xff1a;N个数里面按一定规则找出k个数的集…

【超图 SuperMap3D】【基础API使用示例】51、超图SuperMap3D - 绘制圆|椭圆形面标注并将视角定位过去

前言 引擎下载地址&#xff1a;[添加链接描述](http://support.supermap.com.cn/DownloadCenter/DownloadPage.aspx?id2524) 绘制圆形或者椭圆形效果 核心代码 entity viewer.entities.add({// 圆中心点position: { x: -1405746.5243351874, y: 4988274.8462937465, z: 370…

小狐狸JSON-RPC:钱包连接,断开连接,监听地址改变

detect-metamask 创建连接&#xff0c;并监听钱包切换 一、连接钱包&#xff0c;切换地址&#xff08;监听地址切换&#xff09;&#xff0c;断开连接 使用npm安装 metamask/detect-provider在您的项目目录中&#xff1a; npm i metamask/detect-providerimport detectEthereu…

vue2的孙子传值给爷爷,爷爷传值给孙子

孙---->爷 在爷爷组件&#xff0c;给父亲组件绑定一个方法 定义一个方法用来接受传来的值 在父亲组件中 给孙子组件绑定v-on“$listeners” 在孙子组件 在特定掉件触发下&#xff0c;将值穿过去&#xff0c;注意&#xff1a;这里的this.$emit的名字要跟爷爷绑定的一…

R语言赋值符号<-、=、->、<<-、->>的使用与区别

R语言的赋值符号有&#xff1c;-、、-&#xff1e;、&#xff1c;&#xff1c;-、-&#xff1e;&#xff1e;六种&#xff0c;它们的使用与区别如下: <-’&#xff1a;最常用的赋值符号。它将右侧表达式的值赋给左侧的变量&#xff0c;像一个向左的箭头。例如&#xff0c;x …

【大数据运维】minio 常见shell操作

文章目录 1. 安装2. 入门操作3. 命令帮助 1. 安装 下载 https://dl.min.io/client/mc/release/linux-amd64/ 赋权与使用 cp mc /usr/bin && chmod x /usr/bin/mc ./mc --help 2. 入门操作 # 添加minio到mc mc config host add minio_alias_name endpoint_adress …