HBase 开发:使用Java操作HBase

embedded/2024/11/20 6:03:50/

1、实战简介

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

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

 2、任务

1、第1关:创建表 
java">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 *********/
}
}
java">命令行:start-dfs.sh ( Hadoop 启动)
回车
start-hbase.sh ( hbase 启动)

2、第2关:添加数据
java">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关:获取数据
java">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关:删除表
java">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.ppmy.cn/embedded/138984.html

相关文章

JavaScript 高级—求数组的最大值与最小值

JavaScript 数组操作:求数组的最大值与最小值 在编程中,处理数组是一个常见的任务。JavaScript 提供了一些内建的方法和技巧,可以方便地找到数组中的最大值和最小值。今天,我们就来详细探讨一下如何使用 JavaScript 来实现这一功…

读懂top后显示内容

第一行:系统信息 top - 06:33:12 up 42 min, 1 user, load average: 0.04, 0.02, 0.00 06:33:12:当前时间。up 42 min:系统已经启动了 42 分钟。1 user:当前有 1 个用户登录。load average: 0.04, 0.02, 0.00:这三个…

Flutter 生成二维码

在这篇博客中,我们将学习如何使用 Flutter 创建二维码,并实现一些常见的自定义选项。通过使用 qr_flutter插件,我们可以轻松地生成基本二维码,甚至可以将图片嵌入二维码中。最终的效果将包括两个二维码:一个是普通二维…

不一样的CSS(二)

目录 一、内容回顾 二、上节内容结束代码 三、icon图标之八卦图 1.内容展示 2.图形分析 3.代码展示 四、icon图标之爱心 1.效果展示 2.代码展示 3.原理分析 五、icon图标之导航图标 1.原理 2.代码实现 3.运行结果展示​编辑 六、icon图标之头像 1.原理分析&…

STL关联式容器之RB-tree(红黑树)

AVL-tree之外,另一个颇具历史并被广泛运用的平衡二叉搜索树是RB-tree(红黑树)。所谓RB-tree,不仅是一颗二叉搜索树,而且必须满足一下规则: 1:每个节点不是红色就是黑色 2:根节点为…

c++数字雨实现

‌数字雨‌是一种视觉效果,通常出现在黑客电影中,表现为屏幕上不断下落的数字和字符,营造出一种科技感和动态效果。‌12 数字雨的实现方法 ‌编程实现‌:可以使用C/C编程语言来实现数字雨效果。通过定义一个字符串数组&#xff0…

基于Java Springboot宠物领养救助平台

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

Elasticsearch集群拒绝请求:索引磁盘使用超限

这是一个典型的Elasticsearch集群因为磁盘空间不足而触发的保护机制,导致索引被设置为只读模式(read-only-allow-delete​)。 以下是解决这个问题的步骤: 释放磁盘空间:您需要清理服务器上的磁盘空间,删除…