HBase 开发:使用Java操作HBase

news2024/11/20 6:32:47

1、实战简介

HBase和Hadoop一样,都是用Java进行开发的,本次实训我们就来学习如何使用Java编写代码来操作HBase数据库。

实验环境:
hadoop-2.7
JDK8.0
HBase2.1.1

 2、任务

1、第1关:创建表 
package step1;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.client.TableDescriptor;
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.hadoop.hbase.util.Bytes;
/**
* HBase 1.0 version of ExampleClient that uses {@code Connection},
* {@code Admin} and {@code Table}.
*/
public class Task{
public void createTable()throws Exception{
/********* Begin *********/
Configuration config = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(config);
try {
// Create table
Admin admin = connection.getAdmin();
try {
TableName tableName = TableName.valueOf("dept");
// 新 API 构建表
// TableDescriptor 对象通过 TableDescriptorBuilder 构建;
TableDescriptorBuilder tableDescriptor =
TableDescriptorBuilder.newBuilder(tableName);
ColumnFamilyDescriptor family =
ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("data")).build();// 构建列族对象
tableDescriptor.setColumnFamily(family); // 设置列族
admin.createTable(tableDescriptor.build()); // 创建表


TableName emp = TableName.valueOf("emp");
// 新 API 构建表
// TableDescriptor 对象通过 TableDescriptorBuilder 构建;
TableDescriptorBuilder empDescriptor =
TableDescriptorBuilder.newBuilder(emp);
ColumnFamilyDescriptor empfamily =
ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("emp")).build();// 构建列族对象
empDescriptor.setColumnFamily(empfamily); // 设置列族
admin.createTable(empDescriptor.build()); // 创建表
} finally {
admin.close();
}
} finally {
connection.close();
}
/********* End *********/
}
}
命令行:

start-dfs.sh ( Hadoop 启动)
回车
start-hbase.sh ( hbase 启动)

2、第2关:添加数据
package step2;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.client.TableDescriptor;
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.hadoop.hbase.util.Bytes;
public class Task {
 public void insertInfo()throws Exception{
 /********* Begin *********/
 Configuration config = HBaseConfiguration.create();
 Connection connection = ConnectionFactory.createConnection(config);
 Admin admin = connection.getAdmin();
 TableName tableName = TableName.valueOf("tb_step2");
 TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(tableName);
 ColumnFamilyDescriptor family = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("data")).build();//  构建列族对象
 tableDescriptor.setColumnFamily(family); //  设置列族
 admin.createTable(tableDescriptor.build()); //  创建表
 // 添加数据
 byte[] row1 = Bytes.toBytes("row1");
 Put put1 = new Put(row1); 
 byte[] columnFamily1 = Bytes.toBytes("data"); // 列
 byte[] qualifier1 = Bytes.toBytes(String.valueOf(1)); // 列族修饰词
 byte[] value1 = Bytes.toBytes("张三丰"); // 值
 put1.addColumn(columnFamily1, qualifier1, value1);
 byte[] row2 = Bytes.toBytes("row2");
 Put put2 = new Put(row2); 
 byte[] columnFamily2 = Bytes.toBytes("data"); // 列
 byte[] qualifier2 = Bytes.toBytes(String.valueOf(2)); // 列族修饰词
 byte[] value2 = Bytes.toBytes("张无忌"); // 值
 put2.addColumn(columnFamily2, qualifier2, value2);
 Table table = connection.getTable(tableName);
 table.put(put1);
 table.put(put2);
 /********* End *********/
 }
}

3、第3关:获取数据
package step3;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.client.TableDescriptor;
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.hadoop.hbase.util.Bytes;
public class Task {
 public void queryTableInfo()throws Exception{
 /********* Begin *********/
 Configuration config = HBaseConfiguration.create();
 Connection connection = ConnectionFactory.createConnection(config);
 Admin admin = connection.getAdmin();
 TableName tableName = TableName.valueOf("t_step3");
 Table table = connection.getTable(tableName);
 // 获取数据
 Get get = new Get(Bytes.toBytes("row1")); // 定义 get 对象
 Result result = table.get(get); // 通过 table 对象获取数据
 //System.out.println("Result: " + result);
 // 很多时候我们只需要获取“值”   这里表示获取  data:1  列族的值
 byte[] valueBytes = result.getValue(Bytes.toBytes("data"), Bytes.toBytes("1")); // 获取到的是字节数组
 // 将字节转成字符串
 String valueStr = new String(valueBytes,"utf-8");
 System.out.println("value:" + valueStr);
 TableName tableStep3Name = TableName.valueOf("table_step3");
 Table step3Table = connection.getTable(tableStep3Name);
 // 批量查询
 Scan scan = new Scan();
 ResultScanner scanner = step3Table.getScanner(scan);
 try {
 int i = 0;
 for (Result scannerResult: scanner) {
 //byte[] value = scannerResult.getValue(Bytes.toBytes("data"), Bytes.toBytes(1));
 // System.out.println("Scan: " + scannerResult);
 byte[] row = scannerResult.getRow();
 System.out.println("rowName:" + new String(row,"utf-8"));
 }
 } finally {
 scanner.close();
 }
 /********* End *********/
 }
}

4、第4关:删除表
package step4;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.client.TableDescriptor;
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.hadoop.hbase.util.Bytes;
public class Task {
 public void deleteTable()throws Exception{
 /********* Begin *********/
 Configuration config = HBaseConfiguration.create();
 Connection connection = ConnectionFactory.createConnection(config);
 Admin admin = connection.getAdmin();
 TableName tableName = TableName.valueOf("t_step4");
 admin.disableTable(tableName);
 admin.deleteTable(tableName);
 /********* End *********/
 }
}

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

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

相关文章

IDEA 开发工具常用快捷键有哪些?

‌在IDEA中,输出System.out.println()的快捷键是sout,输入后按回车(或Tab键)即可自动补全为System.out.println()‌‌。 此外,IDEA中还有一些其他常用的快捷键: 创建main方法的快捷键是psvm,代…

基于Lora通讯加STM32空气质量检测WIFI通讯

目录 目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 1.电路图采用Altium Designer进行设计: 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着环境污染问题的日益严重,空气质量的监测与管理已经…

【C++】list使用详解

本篇介绍一下list链表的使用,后续也是会对list进行模拟实现的。list是链表里面的双向链表。 1.文档介绍 list - C Referencehttps://legacy.cplusplus.com/reference/list/list/ list中的接口比较多,此处类似,只需要掌握如何正确的使用&am…

([LeetCode仓颉解题报告] 661. 图片平滑器

[LeetCode仓颉解题报告] 661. 图片平滑器 一、 题目1. 题目描述2. 原题链接 二、 解题报告1. 思路分析2. 复杂度分析3. 代码实现 三、 本题小结四、 参考链接 一、 题目 1. 题目描述 2. 原题链接 链接: 661. 图片平滑器 二、 解题报告 1. 思路分析 由于只需要3*39个格子&am…

算法-二叉树(从理论知识到力扣题,递归、迭代。)

二叉树 一、二叉树理论知识1、种类a.满二叉树b.完全二叉树c.二叉搜索树d.平衡二叉搜索树 2、java对于树的理解3、存储a.链式存储(常用)b.数组存储 4、遍历方式a.深度优先搜索b.广度优先搜索 5、树的定义(链式) 二、力扣题解写题思…

数字后端零基础入门系列 | Innovus零基础LAB学习Day11(Function ECO流程)

###LAB 20 Engineering Change Orders (ECO) 这个章节的学习目标是学习数字IC后端实现innovus中的一种做function eco的flow。对于初学者,如果前面的lab还没掌握好的,可以直接跳过这节内容。有时间的同学,可以熟悉掌握下这个flow。 数字后端…

打开AI的黑盒子——机器学习可解释性!

2024深度学习发论文&模型涨点之——机器学习可解释性 现在以深度学习为主的方法在各个领域都已经next level了,但是如何解释我们的模型仍然是个难题。为什么得到这样的结果往往和结果本身一样重要。因此,个人觉得Explainable AI (XAI)依然会是近些年…

白蚁自动化监测系统的装置和优势

一、背景 在当今社会,随着科技的飞速发展,智能化、自动化技术在各个领域的应用日益广泛,白蚁自动化监测系统作为一种高效、精准的白蚁防控手段,正逐步成为行业内的主流趋势,既是文物古建水利堤坝等预防性保护的要求&a…

HarmonyOs鸿蒙开发实战(10)=>状态管理-对象数组的属性数据变更刷新UI,基于@Observed 和@ObjectLink装饰器

1.条件:基于HarmonyOs5.0.0版本. 2.功能要求:横向列表中每个景点的名称(eg: 第二项 “灵隐寺” ), 在通过天气接口拿到对应天气后,拼接到名称后面 > 变成(“灵隐寺” 天气)) 3.老规矩先看…

详细描述一下Elasticsearch搜索的过程?

大家好,我是锋哥。今天分享关于【详细描述一下Elasticsearch搜索的过程?】面试题。希望对大家有帮助; 详细描述一下Elasticsearch搜索的过程? Elasticsearch 的搜索过程是其核心功能之一,允许用户对存储在 Elasticsea…

FPGA理论基础1一一一简单的硬件知识

FPGA理论基础一一一简单的硬件知识 文章目录 FPGA理论基础一一一简单的硬件知识一、BANK1.1、BANK01.2、BANK141.3、MGTBANK二、上电时序三 认识命名规则 一、BANK 7系列的FPGA中,BANK分为HPBank、HRBank、HDBank;但并不是一个FPGA中会同时包含HP/HR/HDBank HP(Hi…

【Mysql】函数---控制流函数

1、if逻辑判断语句 格式 解释 if(expr,v1,v2) 如果表达式expr成立,返回结果v1,否则返回v2 ifnull(v…

【Java企业级开发技术】【MyBatis入门程序】上机实验

Java企业级开发技术-MyBatis入门程序-上机实验 1 实验目的 掌握Mybatis环境配置熟悉Mybatis基本开发流程能够开发简单的入门程序 2 实验内容 创建1个学生(student)表,包括学号(num),姓名(name),年龄(age),通过Mybatis框架实现如下数据库访…

python之sklearn--鸢尾花数据集之数据降维(PCA主成分分析)

python之sklearn–鸢尾花数据集之数据降维(PCA主成分分析) sklearn库:Scikit - learn(sklearn)是一个用于机器学习的开源 Python 库。它建立在 NumPy、SciPy 和 matplotlib 等其他科学计算库之上,为机器学习的常见任务提供了简单…

已解决-idea创建Maven项目卡死,一动不动

先说原因: idea创建maven项目时要从中央仓库下载archetype-catalog.xml(文件较大,14.8M)导致卡住 所以一种解决方案是,手动将这个文件下载到本地的仓库目录下即可解决 文件下载地址: 链接:https://pan.baidu.com/s/1…

vulhub之log4j

Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645) 漏洞简介 Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。Apache Log4j 2.8.2之前的2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码。 Apache Log4j 在应用程序中添加日志记录最…

基于Springboot+Vue的农产品销售系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 这个系…

Ascend C算子性能优化实用技巧05——API使用优化

Ascend C是CANN针对算子开发场景推出的编程语言,原生支持C和C标准规范,兼具开发效率和运行性能。使用Ascend C,开发者可以基于昇腾AI硬件,高效的实现自定义的创新算法。 目前已经有越来越多的开发者使用Ascend C,我们…

矩阵论在深度学习中的应用

摘要: 本文深入探讨了矩阵论在深度学习领域的广泛应用。首先介绍了深度学习中数据表示和模型结构与矩阵的紧密联系,接着详细阐述了矩阵论在神经网络训练算法优化、卷积神经网络(CNN)、循环神经网络(RNN)及其…

表格的选择弹窗,选中后返显到表格中

项目场景: 提示:这里简述项目相关背景: 表格的下拉框可以直接显示选项,那如果选择框不是下拉的,而是弹窗,那么在表格中如何返显呢? 问题描述 如上图所示,点击表格中的选择&#xf…