1.需求
主要实践建表、插入数据、删除数据、查询等功能。要求建立一个如下所示的表:
- 表名:$your_name:student
- 空白处自行填写, 姓名学号一律填写真实姓名和学号
2.思路
2.1 建立远程Hbase集群连接 -- HbaseInit.java
package com.jike.bigdata;
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;
/**
* @author: fz
* @create: 2021-08-06 23:45
* Hbase客户端的初始化
**/
public class HbaseInit {
public static Connection createConnection() throws IOException {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "jikehadoop01,jikehadoop02,jikehadoop03");
conf.set("hbase.zookeeper.property.clientPort", "2181");
return ConnectionFactory.createConnection(conf);
}
}
2.2 创建表结构--CreateTable.java
package com.jike.bigdata;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;
import org.apache.hadoop.hbase.regionserver.BloomType;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.NamespaceDescriptor;
import java.io.IOException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author: fz
* @create: 2021-08-06 23:49
* 创建表
**/
public class CreateTable {
public static void create(Connection connection, String tableName, String... columnFamilies) throws IOException {
Admin admin = connection.getAdmin();
if (tableName == null || columnFamilies == null) {
return;
}
HTableDescriptor table = new HTableDescriptor(TableName.valueOf(tableName));
for (int i = 0; i < columnFamilies.length; i++) {
if (columnFamilies[i] == null)
continue;
HColumnDescriptor columnDescriptor = new HColumnDescriptor(columnFamilies[i]);
columnDescriptor.setMaxVersions(1);
table.addFamily(columnDescriptor);
}
admin.createTable(table);
System.out.println("成功创建表 " + table + ", column family: " + Arrays.toString(columnFamilies));
}
}
//创建表空间 TableNameSpace:TableName--> xiaoyuer:student
public class CreateNameSpace {
public static void createNamespace(Connection connection, String tablespace) throws IOException {
HBaseAdmin admin = (HBaseAdmin) connection.getAdmin();
admin.createNamespace(NamespaceDescriptor.create(tablespace).build());
System.out.println("成功创建表空间 " + tablespace);
}
}