文章目录
- 一、HBase Java API 核心类介绍
- 1.1、HBaseConfiguration
- 1.2、HBaseAdmin
- 1.3、HTableDescriptor
- 1.4、HColumnDescriptor
- 1.5、HTable
- 1.6、Put
- 1.7、Get
- 1.8、Result
- 1.9、ResultScanner
- 二、创建Configuration 对象
- 三、创建表
- 步骤 1:开发环境配置
Hadoop集群搭建及配置⑧——Hbase的安装配置
eclipse连接Hadoop
eclipse 实现 Hdfs java API
简单熟悉HDFS的常用命令
Hbase java API 实现增删改查
没有安装hbase和eclipse连接Hadoop的可以看点击前面文章:
HBase 提供了丰富的 Java API 接口,可以通过 HBase Java API 完成和HBase shell 相同的功能。
一、HBase Java API 核心类介绍
本文章用HBase Java API 介绍 HBase Java API 核心类主要由 HBaseConfigurantion、HBase Admin、HTable 和数据操作类组成,和表的创建。
1.1、HBaseConfiguration
HBaseConfiguration 类位于 org.apache.hadoop.hbase.HBaseConfiguration。作用:完成对 HBase 的配置,主要设置一些关键属性。
常见函数如下表所示。
该方法设置了hbase.zookeeper.property.clientPort
的端口号为 2181。一般情况下, HBaseConfiguration 会使用构造函数进行初始化,然后再使用其他方法。
1.2、HBaseAdmin
HBaseAdmin 类位于 org.apache.hadoop.hbase.client.HBaseAdmin。
作用:提供了一个接口来管理 HBase 数据库的表信息。它提供的方法包括:创建表, 删除表,列出表项,使表有效或无效,以及添加或删除表列族成员等。常见函数如下表所示。
用法示例:使表处于无效状态。
1.3、HTableDescriptor
HTableDescriptor 类位于 org.apache.hadoop.hbase.HTableDescriptor。作用:包含了表的名字及其对应表的列族。常见函数如下表所示。
通过一个 HColumnDescriptor 实例,为 HTableDescriptor 添加了一个列族:family。
1.4、HColumnDescriptor
HColumnDescriptor 类位于org.apache.hadoop.hbase.HColumnDescriptor。
作用:维护着关于列族的信息,例如版本号,压缩设置等。它通常在创建表或者为表添加列族的时候使用。列族被创建后不能直接修改,只能通过删除然后重新创建的方式。列族被删除的时候,列族里面的数据也会同时被删除。常见函数如下表所示。
此例,为表添加了一个 content 的列族。
1.5、HTable
HTable 类位于 org.apache.hadoop.hbase.client.HTable。
作用:可以用来和 HBase 表直接通信。此方法对于更新操作来说是非线程安全的。常见函数如下表所示。
1.6、Put
Put 类位于 org.apache.hadoop.hbase.client.Put。
作用:用来对单个行执行添加操作。常见函数如下表所示。
1.7、Get
Get 类位于 org.apache.hadoop.hbase.client.Get。
作用:用来获取单个行的相关信息。常见函数如下表所示。
1.8、Result
Result 类位于 org.apache.hadoop.hbase.client.Result。
作用:存储 Get 或者 Scan 操作后获取表的单行值。使用此类提供的方法可以直接获取值或者各种 Map 结构(key-value 对)。常见函数如下表所示。
1.9、ResultScanner
ResultScanner 类位于 Interface。
作用:客户端获取值的接口。常见函数如下表所示。
二、创建Configuration 对象
HBaseConfiguration 是每一个 hbase client 都会使用到的对象,它代表的是 HBase 配置信息。它有两种构造方式:
// 默认的构造方式会尝试从 `hbase-default.xml `和 `hbase-site.xml` 中读取配置。
// 如果classpath 没有这两个文件,就需要你自己设置配置。
public HBaseConfiguration()
public HBaseConfiguration(final Configuration c)
Configuration HBASE_CONFIG = HBaseConfiguration.create();
HBASE_CONFIG.set(“hbase.rootdir”,”hdfs://192.168.142.1280:8020/hbase”)
// 此处的 ip 地址为主节点的 ip 地址,端口号为 hbase-site.xml 中配置的端口号。
HBASE_CONFIG.set(“hbase.zookeeper.quorum”, “master,slave1,slave2”);
//hbase.zookeeper.quorum 的值不能采用 IP 方式,必须使用名称。
HBASE_CONFIG.set(“hbase.zookeeper.property.clientPort”, “2181″);
HBASE_CONFIG.set(“hbase.master”,”hdfs://192.168.142.128:60000”);
Configuration 对象创建完成以后,创建连接到 HBase 数据库的 concontion 对象,并通过此对象获取 Admin 对象,它负责创建数据库表的操作:
Connection connection = ConnectionFactory.createConnection(config);
Admin admin = connection.getAdmin();
创建 amind 对象之后,就可以创建数据表啦。
三、创建表
步骤 1:开发环境配置
(1)导入 JAR 包,将 hbase-1.2.2-bin.tar.gz 解压缩到 Windows 系统下,自己注意安装路径。
(2)右键引用库配置路径,添加 HBase 依赖的 JAR 包,将解压缩的 hbase-1.2.2\lib 下的 JAR 包全部导入。
(3)创建CreateTable,编写代码。
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.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.ConnectionFactory;
public class CreateTable {
// 创建hbase集群连接
static Configuration conf= null;
static {
// Configuration类用于加载需要连接hbase的各项配置
conf = HBaseConfiguration.create();
conf.set("hbase.rootdir","hdfs://192.168.142.128:8020/hbase");
conf.set("hbase.master","hdfs://192.168.142.128:60000");
conf.set("hbase.zookeeper.property.clientPort","2181");
conf.set("hbase.zookeeper.quorum","master,slave1,slave2");
}
public static int createTable(String tableName,String[] family)
throws MasterNotRunningException,ZooKeeperConnectionException,IOException {
Admin admin = ConnectionFactory.createConnection(conf).getAdmin();
HTableDescriptor table= new HTableDescriptor(TableName.valueOf(tableName)); // 在tablename表里操作列族
for(String str: family){
HColumnDescriptor column = new HColumnDescriptor(str);
column.setMaxVersions(3);
table.addFamily(column); // 添加列族
}
if(admin.tableExists(TableName.valueOf(tableName))) { // 判断表存在与否
System.out.println(tableName+";already exist 已经存在");
return -1;
}
admin.createTable(table);
admin.close();
System.out.println(tableName+":create success 创建成功");
return 1;
}
public static void main(String[] args)
throws MasterNotRunningException,ZooKeeperConnectionException,IOException{
createTable("People",new String[]{"info","grade"});
}
}
可以通过网站 master:60010
查看是否创建表 People
。