文章目录
HBase Java API操作
零、启动Hbase
要先确保linux上 Hbase启动,不然连不上
一、Java创建Hbase 项目
1、创建文件夹
先在D盘创建一个空的文件夹 Hbase03
用来存放hbase项目
2、打开Java IDEA
1) 新建项目
点击左上角,新建项目
2)选择Maven
选择Maven包管理,记住一定是jdk1.8
版本的,然后那个从archetype
不要选择
然后点击下一步,位置选择刚刚D盘创建的那个Hbase03
文件夹,然后点击完成
二、配置环境
创建完成之后,进来是一个pom.xml 文件
添加以下的配置,其中大部分都是本来就有的,主要是<dependencise></dependencise>
这个部分
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>untitled</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>2.5.0</version>
</dependency>
</dependencies>
</project>
然后右上角有个m的图标,点击一下,加载配置文件,导入包,这个很关键,不然包那些都用不起
三、Java API操作
1、创建包
在src
下面 main
下面java
下面创建一个org.example
包
在org.example
包下面创建一个 HBaseDemo
类
2、java API 连接Hbase
输入以下代码,创建一个对象conf 接收使用HBaseConfiguration
包的create()
方法 进行连接,然后使用 try
,catch
进行异常捕获
package org.example;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import java.io.IOException;
public class HBaseDemo {
private static Connection connection;
private static String nameSpacName;
/**
* 连接hbase
* */
static {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum","master,slave1,slave2");
try{
connection = ConnectionFactory.createConnection(conf);
}catch (IOException ex){
ex.printStackTrace();
}
}
public static void main(String[] args) {
}
}
3、java API 创建表空间
现在linux里面查看所有的表空间
在下面创建一个createNameSpace
创建表空间的函数方法,里面的参数是表空间的名字,然后下面main
方法进行调用方法
public static void createNameSpace(String nameSpacName) throws IOException{
if(nameSpacName == null || nameSpacName.equals("")){
System.err.println("namespace 不能为空!");
return;
}
Admin admin = connection.getAdmin();
NamespaceDescriptor.Builder builder = NamespaceDescriptor.create(nameSpacName);
NamespaceDescriptor namespaceDescriptor = builder.build();
try{
admin.createNamespace(namespaceDescriptor);
System.out.println("namespace 创建成功");
}catch (NamespaceExistException e){
System.err.println("namespace 名字已存在!");
}
}
public static void main(String[] args) throws IOException{
createNameSpace("Hbase2");
}
运行结果,linux下面多出了一个新创建的Hbase2表空间
4、Java API 删除表
在表空间下面,刚刚创建了一个表hb,现在将这个表给删除掉
在下面创建一个deTable
创建删除表的函数方法,里面的参数是表空间的名字和删除表的名字,首先创建一个admin
对象,获取admin
,然后创建一个TableName
方法,将表空间参数和表明参数传入进去,在hbase
里面要删除表的话,首先要将表标记为不可用
,使用创建的admin
对象,调用disableTable
方法传入表名参数,将这个表标记为不可用,然后使用deleteTable
方法,删除表,然后使用close
方法关闭,最后下面main
方法进行调用方法
public static void deTable(String nameSpacName,String tableName) throws IOException {
// if(!existsTable(nameSpacName,tableName)){
// System.out.println("表不存在!");
// return;
// }
Admin admin = connection.getAdmin();
TableName tb = TableName.valueOf(nameSpacName, tableName);
admin.disableTable(tb); //再删除表之前首先要把表设置为不可用,跟在linux里面一样的
admin.deleteTable(tb);
admin.close();
}
main 方法调用删除表的deTable
函数,将表空间参数和表名参数传入进去
执行完成
在linux中进行查看,Hbase2中的hb表已经被删除了
5、Java API 插入数据
还是讲刚刚的那个Hbase2下的hb表创建回来,列族是h1,在下面创建数据
下面创建putData函数插入hbase表数据,但是现在还没有成功,先不进行方法说明
/**
* put 放入数据
* 顺序是:表空间:表名,行名,列族:列名,还有值
* */
public static void putData(String nameSpacName,String tableName,String rowkey,String cf,String cl,String value) throws IOException {
TableName tb = TableName.valueOf(nameSpacName,tableName);
Table table = connection.getTable(tb);
Put put = new Put(Bytes.toBytes(rowkey)); //先字节转换,然后把行名放进去
put.addColumn(Bytes.toBytes(rowkey),Bytes.toBytes(cf),Bytes.toBytes(cl));
}
6、Java API 删除表数据
删除表空间下Hbase2,hb表里面的数据
首先在linux进行查看,hb表下面的数据
在下面创建一个deledata
方法,里面的参数,表空间,表名,列族,列名,行名,创建一个tb
对象用来获取表空间和表名,然后创建一个table
对象那个,获取刚刚的tb
对象,创建delete
对象,里面的参数是指定删除哪一行,,用delete
调用addColumn
方法,里面的参数是列族和列,最后table
对象调用delete
方法,传入参数delete
对象
/**
* 删除表数据 deletedata
* */
public static void deledata(String nameSpacName,String tableName,String cf,String cl,String rowkey) throws IOException{
TableName tb = TableName.valueOf(nameSpacName,tableName);
Table table = connection.getTable(tb);
Delete delete = new Delete(Bytes.toBytes(rowkey)); //指定删除哪一行的数据
delete.addColumn(Bytes.toBytes(cf),Bytes.toBytes(cl)); //列族和列
table.delete(delete);
}
下面main方法,调用deletedata
函数方法
public static void main(String[] args) throws IOException{
// createNameSpace("Hbase2");
// deTable("Hbase2","hb");
// putData("Hbase2","hb","1002","h1","name","wang");
deledata("Hbase2","hb","h1","name","1001");
}
运行完成
在linux中查看,数据已经没有了