通过JAVA的api来进行hbase编程

2023-11-10

操纵habase的时候,通过Hbase shell可以进行一些操作,但是和实际的编程实例联系起来不方便,因此本文介绍有关Hbase编程的相关java API,并直接在idea中编写java代码,连接hbase并执行相关操作。实际上:hbase shell中输入的相关命令,最终都是通过jruby将其转换成了java代码进行执行,所以,本质还是java进行执行的。jruby转换相关命令的文件在这个目录当中:

/usr/local/hbase/lib/ruby/shell/commands

通过java的api进行hbase编程,实际上是将表和对表的增删改查等操作封装成了类对象

                                 

相关类如下:

1 配置对象:Configuration以及HBaseConfiguration

作用:用来加载src/resources目录下的配置文件

2 表名对象:TableName

作用:用来指定表名

3 连接对象:Connection以及连接工厂对象:ConnectionFactory

作用:用来创建连接

4 通过连接Connection对象,可以得到HBaseAdmin和Htable对象,分别用来执行标的DDL操作和DML操作,即:表的增删改操作以及表中数据的增删改查操作

DML中的增删改也封装成了相应的类:Put、Get、Delete

返回的结果对象:Result(一行数据)、ResultScanner(多行数据)、Cell(一行中的某列数据,即一个单元格的数据)(CellUtil用来获取cell的列族、值等信息)

条件查询的时候用到的类:Filter和SingleColumnValueFilter、Scan

多条件查询:FilterList类

分页查询:PageFilter类

 

5 表描述其以及列族描述器:HTableDescriptor和 HColumnDescriptor

作用:表描述器:维护关于列的信息。

列族描述器:维护关于列的信息。

 

示例代码:代码逻辑:表的增删改查,以表的get方法为示例:建表 mytable->查询mytable.get( Get get)->安照get方法的参数类型,写Get类对象 get->获得的结果用Result保存,具体到Cell就是一个单元格的信息。

public class DMLTest {
    //连接对象和表名
    private static final Configuration CONF = HBaseConfiguration.create();
    //表名
    private static final TableName TABLE_NAME = TableName.valueOf("tb2");
    //列族:存放 人员信息,年龄信息,职业信息
	@Test
    public void getOneRowDataTest()throws Exception{
		// 获取数据库连接
		Connection conn = ConnectionFactory.createConnection(conf);
		// 获取你要操作的表
		HTable mytable = (HTable)conn.getTable(tableName);
		// 创建数据的获取对象 cf1 cf2 cf3 cf1
		Get get = new Get(Bytes.toBytes("hb_1"));
		// 指定列族查询
		// get.addFamily(Bytes.toBytes("cf1"));
		// 根据列名获取数据
		// get.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("name"));
		// 根据特定的时间戳 进行数据的查询
		// get.setTimeStamp(1568949499113L);
		
		
		// 获取这行数据
		Result result = mytable.get(get);
		// 观察 result 看怎么解析
		Cell[] cells = result.rawCells();
		System.out.println("ROW\t\tCOLUMN+CELL");
		for (Cell cell : cells) {
//			System.out.print("列族 : " + new String(CellUtil.cloneFamily(cell)) + "\t");
//			System.out.print("列的限定符 : " + new String(CellUtil.cloneQualifier(cell)) + "\t");
//			System.out.print("列的值 : " + new String(CellUtil.cloneValue(cell)) + "\t");
//			System.out.println("这个值的时间戳 : " + cell.getTimestamp());
			
			System.out.println(""+new String(result.getRow())+"\t\tcolumn="+new String(CellUtil.cloneFamily(cell))+":"+new String(CellUtil.cloneQualifier(cell))+", timestamp="+cell.getTimestamp()+", value="+new String(CellUtil.cloneValue(cell))+"");
			
			
		}
		
		
		// 关闭数据库连接
		if(null != mytable){
			mytable.close();
		}
		if(null != conn){
			conn.close();
		}
	}
}
	

 

参考文章:https://my.oschina.net/u/181485/blog/305925  (HBase编程实例)

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过JAVA的api来进行hbase编程 的相关文章

  • hbase 作为 Web 应用程序中的数据库

    关于在真实的 Web 应用程序中使用 hadoop 或相关技术的一个大问题 我只是想了解 Web 应用程序如何使用 hbase 作为其数据库 我的意思是 这是大数据应用程序所做的事情 还是他们使用普通数据库并仅使用这些技术进行分析 拥有一个
  • HBase 基于列或基于行

    我想知道 HBase 使用的是基于列的存储还是基于行的存储 我阅读了一些技术文档并提到 HBase 的优点是使用基于列的存储将相似的数据存储在一起以促进压缩 所以这意味着不同行的相同列存储在一起 但我也了解到 HBase 是一个排序的键值映
  • HBase更新操作

    我是HBase新手 我发现HBase客户端API不支持更新操作 那是对的吗 如果是这样 更新特定行键的值的建议最佳实践是什么 您可以使用 PUT 来创建或更新任何单元格的值 你don t需要使用删除 除非您希望新版本不包含某些旧单元格 说我
  • 设置HBase、hadoop、hive通过hive访问Hbase的正确方法是什么?

    我在配置和安装 hbase hadoop hive 时遇到问题 到目前为止我在 ubuntu 14 04 3 LTS 的虚拟机上做了什么 像这样安装了jdk和版本jdk1 8 0 60 https askubuntu com questio
  • HBASE SPARK 带过滤器的查询,无需加载所有 hbase

    我必须查询 HBASE 然后使用 Spark 和 scala 处理数据 我的问题是 通过我的解决方案 我获取 HBASE 表的所有数据 然后进行过滤 这不是一种有效的方法 因为它占用了太多内存 所以我想直接做过滤器 我该怎么做 def Hb
  • 将 Jar 文件添加到 WEB-INF/lib [重复]

    这个问题在这里已经有答案了 我是 Eclipse Java 和 Linux 的新手 我搜索这个问题 但没有找到答案 我想编写一个操作 HBase 表的程序 所以我有一些与 HBase 相关的 Jar 文件 在普通的 Java 应用程序中 我
  • HBase区域服务器和Hadoop数据节点应该在同一台机器上吗?

    抱歉 我没有资源来设置集群来测试它 我只是想知道 我可以将 hbase 区域服务器部署在 hadoop 数据节点计算机之外的单独计算机上吗 我想答案是肯定的 但我不确定 hbase区域服务器和hadoop数据节点部署在不同的机器上是好是坏
  • 高效查询Hbase

    我使用 Java 作为查询 Hbase 的客户端 我的 Hbase 表设置如下 ROWKEY HOST EVENT 21 1465435 host hst com clicked 22 1463456 hlo wrld com dragge
  • 如何运行Hbase Java示例?

    我在运行简单的 Hbase 示例时遇到问题 我在 HbaseTest java 上创建了一个表并插入了一些记录 在Unix中 我可以编译java类 经过 javac classpath hbase 0 94 2 jar hadoop cor
  • Hbase连接zookeeper错误

    环境 Ubuntu 14 04 hadoop 2 2 0 hbase 0 98 7 当我启动hadoop和hbase 单节点模式 时 都成功 我还检查了hadoop的网站8088 hbase的网站60010 jps 4507 Seconda
  • 使用 MultipleOutputs 写入 MapReduce 中的 HBase

    我目前有一个 MapReduce 作业 它使用 MultipleOutputs 将数据发送到多个 HDFS 位置 完成后 我使用 HBase 客户端调用 在 MR 之外 将一些相同的元素添加到一些 HBase 表中 使用 TableOutp
  • HBase Java 客户端 - 未知主机:localhost.localdomain

    版本 Hadoop 2 0 0 cdh4 3 1 HBase 0 94 6 cdh4 3 1 我正在运行cloudera快速启动vm 一切都在172 16 144 150上运行 这是我的小HBase Java客户端 HbaseClient
  • 在hbase中创建表

    我是 hbase 和 hadoop 的新手 无论如何 我已经成功建立了一个由3台机器组成的hadoop集群 现在我需要一些帮助来建立数据库 我有一个表 评论 包含字段 user id comments 对评论的评论 可以多个 和状态字段相同
  • hbase api - 通过行ID列表获取数据行信息

    是否可以通过hbase java API通过行id列表获取hbase数据记录 例如 我有一个已知的 hbase 行 ID 列表 mykey1 myhash1 mykey1 myhash2 mykey1 myhash3 mykey2 myha
  • 将多个前缀行过滤器设置为扫描仪 hbase java

    我想创建一台扫描仪 它可以为我提供带有 2 个前缀过滤器的结果例如 我想要其键以字符串 x 开头或以字符串 y 开头的所有行 目前我知道只能使用一个前缀 方法如下 scan setRowPrefixFilter prefixFiltet 在
  • 2n + 1 法定人数是什么意思?

    我在描述 HBase 的 Zookeeper 配置时遇到过这个问题 但我对这个术语并不熟悉 N 与我的 HBase 集群中的节点数量有关系吗 或者我应该在 Zookeeper 集群中使用的节点数量 2f 1是指你所需要的可靠性 可用性水平
  • HBase、Hadoop:如何估计 HBase 表或 Hadoop 文件系统路径的大小?

    我有多个 HBase 表 如何估计在 java 中使用的表的大致大小 一种方法是你必须使用java客户端访问hdfs 通常在 hbase文件夹 所有表格信息 将在场 Hadoop 外壳 你可以检查使用hadoop fs du h path
  • HBase:返回不存在字段的记录

    我在 HBase 中有一个人员表 如下所示 ROW KEY COLUMN CELL dinesh column details code value dr 01 dinesh column status is error value fal
  • 连接到在 Docker 中运行的 HBase

    我无法连接到 Windows 上 Docker 中运行的 HBase banno hbase 独立 https registry hub docker com u banno hbase standalone 图像 但是 我可以连接到本地安
  • 如何在 HBase 中预分割表

    我将数据存储在具有 5 个区域服务器的 HBase 中 我使用 url 的 md5 哈希作为我的行键 目前 所有数据仅存储在一台区域服务器中 所以我想预先分割区域 以便数据在所有区域服务器上统一传输 我希望通过行键的第一个字符将表分成五个区

随机推荐

  • vant的中文的文档

    vant的中文的文档 拿走把小傻瓜 https vant contrib gitee io vant zh CN 但是本着点赞自愿 收藏吃灰 还是多少可以支持一下
  • TCP连接的状态详解以及故障排查

    1 TCP状态 了解TCP之前 先了解几个命令 linux查看tcp的状态命令 1 netstat nat 查看TCP各个状态的数量 2 lsof i port 可以检测到打开套接字的状况 3 sar n SOCK 查看tcp创建的连接数
  • C++中非常好用的泛型函数

    1 泛型函数 泛型函数结合lambda函数可以实现很多功能如 将序列中的每个负数替换为其绝对值 transform vi begin vi end vi begin int x return x lt 0 x x 查找第一个长度大于等于sz
  • Camera ISP

    1 ISP工作原理 ISP Image Signal Processor 即图像信号处理 主要作用是对前端图像传感器输出的信号做后期处理 依赖于 ISP 才能在不同的光学条件下都能较好的还原现场细节 景物通过 Lens 生成的光学图像投射到
  • 微信小程序- 选择器 合并时间和日期

    https developers weixin qq com miniprogram dev component picker html 从底部弹起的滚动选择器 类型有普通选择器 多列选择器 时间选择器 日期选择器 省市区选择器 没有现成的
  • Unity3D打包时,编译错误

    最近打包Unity3D的APK包时 报编译错误 Failed to compile Java code to DEX D Work Parkour branches 20131219 box360 Temp StagingArea gt j
  • VLC裁剪和移植到S3C6410

    1 由于项目需求 这几天在折腾VLC 需要将它裁剪并移植到PowerPC上 由于板子没有到 先在6410上跑 目前从需求看我们只要VLC作为一个server即可 先贴配置 如下 几乎disable掉所有东东 bin sh for arm C
  • Loki搭建日志收集系统

    Loki 什么是Loki Loki是受Prometheus启发的水平可扩展 高度可用的多租户日志聚合系统 他被设计为非常经济高效且易于操作 它不索引日志内容 而是为每个日志流设置一组标签 Loki文档网址 https grafana com
  • 牛客面试必刷TOP101——二分查找排序

    列表 二分查找 I BM17 二维数组中的查找 BM18 寻找峰值 BM19 组中的逆序对 BM20 旋转数组的最小数字 BM21 比较版本号 BM22 二分查找 I BM17 原题 请实现无重复数字的升序数组的二分查找 给定一个 元素升序
  • 不可控器件——电力二极管(电导调制效应)

    电力二极管 也被称之为半导体整流器 是不可控器件 原理简单 工作可靠 以半导体PN结为基础 PN结是由一个N型掺杂区和一个P型掺杂区紧密接触所构成的 由于两者的多子是不同的 会造成两者的多子向另一个方向做扩散运动 到对方区域形成少数载流子
  • 分库分表?如何做到永不迁移数据和避免热点?

    本文经授权转载自今日头条号 老顾聊技术 原文地址 www toutiao com i6677459303055491597 一 前言 中大型项目中 一旦遇到数据量比较大 小伙伴应该都知道就应该对数据进行拆分了 有垂直和水平两种 垂直拆分比较
  • VMware ESXi网络配置

    目录 一 ESXi网络配置方法 二 虚拟机网络配置方法 一 ESXi网络配置方法 1 搭建完成ESXi平台后 即可为它设置系统IP 如下图 在此界面按F2 输入用户名密码后进入配置界面 2 左侧菜单栏可以看到 Configure Manag
  • 关于redis的主从、哨兵、集群

    开发十年 就只剩下这套Java开发体系了 gt gt gt 关于redis主从 哨兵 集群的介绍网上很多 这里就不赘述了 一 主从 通过持久化功能 Redis保证了即使在服务器重启的情况下也不会损失 或少量损失 数据 因为持久化会把内存中数
  • SpringBoot2.x中的应用监控:Actuator+Prometheus+Grafana

    总览 Actuator 提供端点将数据暴露出来 Prometheus 定时去拉取数据并保存和提供搜索和展示 Grafana 提供更加精美的图像化展示 Actuator SpringBoot2 x使用Actuator来做应用监控 Promet
  • STM32 One or more Device Family Pack Devices are not present解决方法

    最近刚刚接触STM32 利用STM32Cube创建工程用Keil后利用打开报如下错误 摸索了一番 发现这里是因为缺少相应的SDK 附一个连接 http www keil com dd2 pack eula container 建议找国内镜像
  • 阿里云CenterOs 7 安装mongodb数据库

    安装 添加下载源 配置yum仓库 vim etc yum repos d mongodb org 3 4 repo mongodb org 3 4 repo文件内容 mongodb org 3 4 name MongoDB Reposito
  • Nginx+FFmpeg实现rtsp流转hls流,在WEB通过H5 video实现视频播放

    概述 本文介绍通过Nginx FFmpeg实现rtsp流转hls流 在WEB通过H5 video标签实现视频播放功能 此方法可用于网络摄像头RTSP视频流WEB端实时播放 一 FFmpeg Nginx转流hls 1 FFmpeg安装 官网
  • cp命令详解_cp命令

    cp命令详解 You can copy a file using the cp command 您可以使用cp命令复制文件 touch test cp apple another apple To copy folders you need
  • FreeRTOS:中断配置

    目录 一 Cortex M 中断 1 1中断简介 1 2中断管理简介 1 3优先级分组定义 1 4优先级设置 1 5用于中断屏蔽的特殊寄存器 1 5 1PRIMASK 和 FAULTMASK 寄存器 1 5 2BASEPRI 寄存器 二 F
  • 通过JAVA的api来进行hbase编程

    操纵habase的时候 通过Hbase shell可以进行一些操作 但是和实际的编程实例联系起来不方便 因此本文介绍有关Hbase编程的相关java API 并直接在idea中编写java代码 连接hbase并执行相关操作 实际上 hbas