1. 添加依赖pom.xml
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-auth</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>2.2.5</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>2.2.5</version>
</dependency>
<!-- 使用mr程序操作hbase 数据的导入 -->
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-mapreduce</artifactId>
<version>2.2.5</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<!-- phoenix 凤凰 用来整合Hbase的工具 -->
<dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-core</artifactId>
<version>5.0.0-HBase-2.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!-- bind to the packaging phase -->
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2. 案例
2.1 创建名称空间
Connection connection = HbaseUtils.getConnection();
//获取Admin
Admin admin = connection.getAdmin();
//doit17已存在,删除名称空间及其下的表
NamespaceDescriptor doit17 = admin.getNamespaceDescriptor("doit17");
if(doit17!=null){
//遍历名称空间下的表
TableName[] doit17s = admin.listTableNamesByNamespace("doit17");
for (TableName tableName : doit17s) {
//禁用表
admin.disableTable(tableName);
//删除表
admin.deleteTable(tableName);
}
//随后删除该名称空间
admin.deleteNamespace("doit17");
}
//获取名称空间构建器
NamespaceDescriptor.Builder builder = NamespaceDescriptor.create("doit17");
//构建名称空间之前可以设置一些属性--->放在Map集合中
Map<String,String> map = new HashMap<>();
//设置属性author
map.put("author","astra");
//设置创建时间
builder.addConfiguration("createTime",System.currentTimeMillis()+"");
builder.addConfiguration(map);
//构建名称空间
NamespaceDescriptor nd = builder.build();
admin.createNamespace(nd);
connection.close();
2.2 创建HbaseUtils--获取Connection对象
public class HbaseUtils {
public static Connection getConnection() throws Exception {
//获取配置对象
Configuration conf = HBaseConfiguration.create();
//设置hbase位置,主机名和端口号
conf.set("hbase.zookeeper.quorum","linux01:2181,linux02:2181,linux03:2181");
//获取连接对象
Connection connection = ConnectionFactory.createConnection(conf);
return connection;
}
}
2.3 列出所有的表
//获取ZooKeeper的连接对象
//1. 创建配置对象
Configuration conf = HBaseConfiguration.create();
//设置hbase的位置
conf.set("hbase.zookeeper.quorum","linux01:2181,linux02:2181,linux03:2181");
//2.获取连接对象
Connection connection = ConnectionFactory.createConnection(conf);
Admin admin = connection.getAdmin();
//列出所有的表---也可以列出指定namespace的表-->admin.listTableNamesByNamespace("namespace");
//也可以获取所有表的描述对象--->List<TableDescriptor> tableDescriptors = admin.listTableDescriptors();
//获取所有的表名
TableName[] tableNames = admin.listTableNames();
for (TableName tableName : tableNames) {
//表名转为字符串
String name = tableName.getNameAsString();
//获取表所在的命名空间
String namespace = tableName.getNamespaceAsString();
//打印
System.out.println(namespace+"----"+name);
}
connection.close();
2.4 判断表是否存在--atrl+alt+m--通过选中的代码创建方法
public static void isExistTable(Admin admin,String table) throws IOException {
TableName tb_dml = TableName.valueOf(table);
boolean b = admin.tableExists(tb_dml);
System.out.println(b);
}
2.5 创建表
public static void createTable(Admin admin , String table) throws IOException {
//创建表---注意需要创建列族
TableDescriptorBuilder demo3Builder = TableDescriptorBuilder.newBuilder(TableName.valueOf(table));
//创建列族--多个列族
//创建第一个列族
ColumnFamilyDescriptorBuilder cf1Builder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("cf1"));
cf1Builder.setMaxVersions(3);
ColumnFamilyDescriptor cf1 = cf1Builder.build();
//创建第二个列族
ColumnFamilyDescriptorBuilder cf2Builder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("cf2"));
cf1Builder.setMaxVersions(3);
ColumnFamilyDescriptor cf2 = cf2Builder.build();
//将连个列族添加进集合
List<ColumnFamilyDescriptor> cfList = new ArrayList();
cfList.add(cf1);
cfList.add(cf2);
demo3Builder.setColumnFamilies(cfList);
TableDescriptor tb_demo3 = demo3Builder.build();
admin.createTable(tb_demo3);
}
2.6 删除表
public static void deleteTable(Admin admin,String table) throws IOException {
admin.disableTable(TableName.valueOf("table"));
admin.deleteTable(TableName.valueOf("table"));
}