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();}}

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

关于dom4j主节点的xmlns无法写入的问题

由于最近需要做一个xml的文件&#xff0c;使用dom4j的时候发现了一个bug&#xff0c;就是我的xmlns根本无法写入到xml的头部标签中。 Element element document.addElement("test"); element.addAttribute("xmlns", "urn:Declaration:datamodel:sta…

【中项第三版】系统集成项目管理工程师 | 第 5 章 软件工程① | 5.1 - 5.3

前言 第5章对应的内容选择题和案例分析都会进行考查&#xff0c;这一章节属于技术的内容&#xff0c;学习要以教材为准。 目录 5.1 软件工程定义 5.2 软件需求 5.2.1 需求的层次 5.2.2 质量功能部署 5.2.3 需求获取 5.2.4 需求分析 5.2.5 需求规格说明书 5.2.6 需求变…

人工智能算法工程师(中级)课程12-PyTorch神经网络之LSTM和GRU网络与代码详解1

大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(中级)课程12-PyTorch神经网络之LSTM和GRU网络与代码详解。在深度学习领域,循环神经网络(RNN)因其处理序列数据的能力而备受关注。然而,传统的RNN存在梯度消失和梯度爆炸的问题,这使得它在长序列任务中的表现不尽…

高速网络技术变革,RoCE取代IB之路

RoCE取代IB&#xff1a;为何之前是IB&#xff0c;现在是RoCE&#xff1f; 以太网在AI算力中的Why、How和What”。 超以太网联盟&#xff08;UEC&#xff09;由Linux基金会和联合开发基金会共同发起&#xff0c;旨在超越传统以太网功能。通过RDMA和RoCE等技术&#xff0c;UEC为…

SMTP服务器地址与端口号有哪些关系与区别?

SMTP服务器地址如何正确配置&#xff1f;怎么验证服务器的地址&#xff1f; 了解SMTP服务器地址与端口号的关系与区别对于确保邮件系统的正常运作至关重要。AokSend将详细探讨这两者之间的关系和区别&#xff0c;并解释它们在邮件传输过程中的重要性。 SMTP服务器地址&#x…

PHP萌宠之家微信小程序系统源码

&#x1f43e;萌宠之家微信小程序&#x1f43e; —— 铲屎官们的温馨小窝✨ &#x1f3e0;【一键开启萌宠乐园】&#x1f3e0; 亲们&#xff0c;是不是每次刷手机都忍不住想看看那些软萌可爱的毛孩子&#xff1f;现在&#xff0c;有了“萌宠之家”微信小程序&#xff0c;你的…

两种调用方法可以让Contact form 7表单在任意地方显示

Contact form 7是wordpress建站过程中最常用到的插件之一&#xff0c;不过&#xff0c;在Contact form 7调用的时候&#xff0c;有些新手还是搞不太清楚它的调用方法。下面简站wordpress小编&#xff0c;就把常用的两种调用方法&#xff0c;分享给大家&#xff1a; Contact fo…

期权末日双买跨式策略-这才是末日轮稳定赚钱的方法吗?!

今天带你了解期权末日双买跨式策略-这才是末日轮稳定赚钱的方法吗&#xff1f;&#xff01;期权末日双买跨式策略是一种在期权到期日前预期市场会出现大幅波动时使用的策略。 期权双买跨式策略适合期权末日轮是因为它能利用临近到期日时市场潜在的大幅波动来获利。末日轮期权&…

深入理解ADB:Android调试桥详解与使用指南

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Android ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 1. 什么是ADB&#xff1f; ADB的基本原理&#xff1a; 2. ADB的安装与配置 安装ADB工具集&#xff1a; 配置ADB环境变量&am…

数据传输工具性能深度评测(阿里云、百度智能云)

阿里云、百度智能云作为领先的云服务提供商&#xff0c;都为数据库提供了配套的数据库工具服务&#xff0c;其中 DTS 是迁移与同步业务的核心服务&#xff0c;本次测试旨在深入比较阿里云与百度智能云在 DTS 数据传输服务性能方面的表现&#xff0c;为企业在选择合适的数据传输…

JVM之运行时数据区(一):程序计数器+本地方法栈

JVM之运行时数据区&#xff08;一&#xff09;&#xff1a;程序计数器本地方法栈 1.运行时数据区概述2.程序计数器作用特点常见问题 3.本地方法接口本地方法本地接口 4.本地方法栈特点 1.运行时数据区概述 Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区其中有一些…

单相非交错CCM图腾柱无桥PFC电流采样问题

目录 前言 仿真复现 调整采样后 总结 前言 之前总结了双向交错图腾柱的学习和实现过程&#xff0c;由于PWM开关频率够高&#xff0c;且采样的是总电流&#xff0c;电流开关谐波较小&#xff0c;采用的是固定位置采样的方案。后面出于对成本的考虑&#xff0c;器件选型等。P…

gitlab新建仓库

总贴 每个git网站都有不同的创建项目的方式&#xff0c;现在举例gitlab&#xff0c;其他例如gitee&#xff0c;gitcode&#xff0c;都是差不多的&#xff0c;自行百度 1![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dae875d9048940c0aeb292c07d6a4a62.png)1和2是项…

android串口通讯(JAVA)

一、app目录下添加 implementation io.github.xmaihh:serialport:2.1.1 1) 点击Sync Now更新依赖 2) AndroidManifest.xml文件添加读取设备信息权限 <uses-permission android:name"android.permission.READ_PHONE_STATE" /> 二、 使用 1) 创建MySerialPo…

UE4-蓝图(可视化编程)学习

一.开关门交互实现 1.需要用到的模板和内容包 2.给门添加碰撞 进入第三人称模板场景&#xff0c;找到门的模型&#xff0c;并将门的模型添加到我们的场景中&#xff1a; 此时我们运行游戏&#xff0c;会发现我们的角色可以穿过我们门的模型&#xff0c;说明我们没有给门添加碰…

从构思到实现:8款高效原型图设计软件指南

高效率地完成工作&#xff0c;那必定是使用更新的工具。作为产品经理&#xff0c;如何快速设计产品&#xff1f;一个优秀的产品原型工具是必不可少的。如何选择合适的原型工具&#xff1f;小编专门整理了8种产品原型工具供参考&#xff0c;并简要介绍了曲线、性价比、功能优缺点…

第122天:内网安全-域信息收集应用网络凭据CS 插件AdfindBloodHound

目录 前置知识 背景和思路 判断是否在域内 案例一&#xff1a;架构信息类收集-网络&用户&域控等 案例二&#xff1a;自动化工具探针-插件&Adfind&BloodHound Adfind(域信息收集工具) ​BloodHound&#xff08;自动化域渗透工具&#xff09; 前置知识 本…

VS2019+CMake+Vtk9.3.0+Qt5.14.2 配置

VS2019CMakeVtk9.3.0Qt5.14.2 配置环境 第一步 下载 基本配置 系统环境&#xff1a;windows11 x64 Qt&#xff1a;5.14.2 这是最后最新的LTS qt离线版本&#xff0c;后续版本都需要在线安装&#xff0c;同时使用qt5.14也避免版权问题。 Qt 5.14&#xff1a;大部分模块基于LG…

虚继承(C++)

目录 菱形继承 虚继承 虚继承原理 虚继承使用注意事项&#xff1a; 不要把所有的遗憾都留给未来&#xff0c;趁年轻出去走走&#xff0c; 让我们用心去感受这个世界&#xff0c;用脚步去丈量这个世界的距离。 这里是来自M--Y的专栏&#xff1a;C启&#xff08;&#xff09;航…

Websocket自动消息回复服务端工具

点击下载《Websocket自动消息回复服务端工具》 1. 前言 在进行Websocket开发时&#xff0c;前端小伙伴通常是和后端开发人员同步进行项目开发&#xff0c;经常会遇到后端开发人员接口还没开发完&#xff0c;也没有可以调试的环境&#xff0c;只能按照接口文档进行“脑回路开发…