欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表

Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表

2024/10/24 18:26:10 来源:https://blog.csdn.net/w776341482/article/details/140539015  浏览:    关键词:Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

  • Hadoop
  • HDFS
  • MapReduce
  • Hive
  • Flume
  • Sqoop
  • Zookeeper
  • HBase 正在···

章节内容

上一节我们完成了:

  • HBase Shell 的使用
  • HBase 增、删、改、查等操作
  • HBase列族相关的操作

背景介绍

这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。
之前已经在 VM 虚拟机上搭建过一次,但是没留下笔记,这次趁着前几天薅羊毛的3台机器,赶紧尝试在公网上搭建体验一下。

  • 2C4G 编号 h121
  • 2C4G 编号 h122
  • 2C2G 编号 h123

在这里插入图片描述

新建工程

新建一个Maven工程,这里就跳过了,不重复描述了。

POM

更新我们的POM文档,加入如下的依赖:

<dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>1.3.1</version>
</dependency>

建立新表

public class Test01 {public static void main(String[] args) throws IOException {Configuration configuration = HBaseConfiguration.create();configuration.set("hbase.zookeeper.quorum", "h121.wzk.icu,h122.wzk.icu");configuration.set("hbase.zookeeper.property.clientPort", "2181");Connection connection = ConnectionFactory.createConnection(configuration);HBaseAdmin admin = (HBaseAdmin) connection.getAdmin();// 创建表描述器HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf("test01"));// 设置列族描述器descriptor.addFamily(new HColumnDescriptor("base_info"));// 建立表admin.createTable(descriptor);System.out.println("test01 表建立完毕");admin.close();connection.close();}}

运行上面的代码,可以得到如下的结果:
在这里插入图片描述

插入数据

public class Test02 {public static void main(String[] args) throws IOException {Configuration configuration = HBaseConfiguration.create();configuration.set("hbase.zookeeper.quorum", "h121.wzk.icu,h122.wzk.icu");configuration.set("hbase.zookeeper.property.clientPort", "2181");Connection connection = ConnectionFactory.createConnection(configuration);HBaseAdmin admin = (HBaseAdmin) connection.getAdmin();// 插入数据Table table = connection.getTable(TableName.valueOf("test01"));// 设定 row keyPut put = new Put(Bytes.toBytes("rk1"));// 列族 列 值put.addColumn(Bytes.toBytes("base_info"), Bytes.toBytes("name"), Bytes.toBytes("wuzikang"));// 执行插入table.put(put);table.close();System.out.println("rk1 base_info:name wuzikang 数据插入成功!");admin.close();connection.close();}}

运行可以获得如下的结果:
在这里插入图片描述

删除数据

public class Test03 {public static void main(String[] args) throws IOException {Configuration configuration = HBaseConfiguration.create();configuration.set("hbase.zookeeper.quorum", "h121.wzk.icu,h122.wzk.icu");configuration.set("hbase.zookeeper.property.clientPort", "2181");Connection connection = ConnectionFactory.createConnection(configuration);HBaseAdmin admin = (HBaseAdmin) connection.getAdmin();// 删除数据Table table02 = connection.getTable(TableName.valueOf("test01"));Delete delete = new Delete(Bytes.toBytes("rk1"));table02.delete(delete);table02.close();System.out.println("rk1 数据删除成功!");admin.close();connection.close();}}

运行可以获得如下的结果:
在这里插入图片描述

获取列族

public class Test04 {public static void main(String[] args) throws IOException {Configuration configuration = HBaseConfiguration.create();configuration.set("hbase.zookeeper.quorum", "h121.wzk.icu,h122.wzk.icu");configuration.set("hbase.zookeeper.property.clientPort", "2181");Connection connection = ConnectionFactory.createConnection(configuration);HBaseAdmin admin = (HBaseAdmin) connection.getAdmin();// 获取某个列族信息HTable table = (HTable) connection.getTable(TableName.valueOf("test01"));Get get = new Get(Bytes.toBytes("rk1"));get.addFamily(Bytes.toBytes("base_info"));// 执行查询Result result = table.get(get);Cell[] cells = result.rawCells();for (Cell cell : cells) {String cf = Bytes.toString(CellUtil.cloneFamily(cell));String column = Bytes.toString(CellUtil.cloneQualifier(cell));String value = Bytes.toString(CellUtil.cloneValue(cell));String rowKey = Bytes.toString(CellUtil.cloneRow(cell));System.out.println("rowKey: " + rowKey + ", " + cf + ", " + column + ", " + value);}table.close();admin.close();connection.close();}}

运行可以获得如下的结果:
在这里插入图片描述

扫描全表

public class Test05 {public static void main(String[] args) throws IOException {Configuration configuration = HBaseConfiguration.create();configuration.set("hbase.zookeeper.quorum", "h121.wzk.icu,h122.wzk.icu");configuration.set("hbase.zookeeper.property.clientPort", "2181");Connection connection = ConnectionFactory.createConnection(configuration);HBaseAdmin admin = (HBaseAdmin) connection.getAdmin();HTable table = (HTable) connection.getTable(TableName.valueOf("test01"));Scan scan = new Scan();ResultScanner scanner = table.getScanner(scan);for (Result result : scanner) {Cell[] cells = result.rawCells();for (Cell cell : cells) {String cf = Bytes.toString(CellUtil.cloneFamily(cell));String column = Bytes.toString(CellUtil.cloneQualifier(cell));String value = Bytes.toString(CellUtil.cloneValue(cell));String rowkey = Bytes.toString(CellUtil.cloneRow(cell));System.out.println("rowKey: " + rowkey + ", " + cf + ", " + column + ", " + value);}}table.close();admin.close();connection.close();}}

运行可以获得如下结果:
在这里插入图片描述

Scan+Row

public class Test06 {public static void main(String[] args) throws IOException {Configuration configuration = HBaseConfiguration.create();configuration.set("hbase.zookeeper.quorum", "h121.wzk.icu,h122.wzk.icu");configuration.set("hbase.zookeeper.property.clientPort", "2181");Connection connection = ConnectionFactory.createConnection(configuration);HBaseAdmin admin = (HBaseAdmin) connection.getAdmin();HTable table = (HTable) connection.getTable(TableName.valueOf("test01"));Scan scan = new Scan();scan.setStartRow("rk1".getBytes());scan.setStopRow("rk2".getBytes());ResultScanner scanner = table.getScanner(scan);for (Result result : scanner) {Cell[] cells = result.rawCells();for (Cell cell : cells) {String cf = Bytes.toString(CellUtil.cloneFamily(cell));String column = Bytes.toString(CellUtil.cloneQualifier(cell));String value = Bytes.toString(CellUtil.cloneValue(cell));String rowkey = Bytes.toString(CellUtil.cloneRow(cell));System.out.println("rowKey: " + rowkey + ", " + cf + ", " + column + ", " + value);}}table.close();admin.close();connection.close();}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com