/**
- @ClassName TestApi
- 一. DDL
- 判断表是否存在
- 创建表 Create
- 删除表 disable drop
- 创建命名空间 Create NameSpace
- 二. DML
- 添加数据 put
- 查询(get)
- 查询(scan)
- 删除数据 delete
- @Description TODO
- @Author mufeng_xky
- @Date 2019/11/9 8:33
-
@Version V1.0
**/
public class TestApi {// 声明链接
private static Connection connection = null;
// 声明管理员对象
private static Admin admin = null;// 初始化
/**
static {
try {
Configuration configuration = HBaseConfiguration.create();
//configuration.set("hbase.zookeeper.quorum", "hadoop102,hadoop103,hadoop104");
connection = ConnectionFactory.createConnection(configuration);
admin = connection.getAdmin();
} catch (IOException e) {
e.printStackTrace();
}
}- 释放资源
- @throws IOException
*/
private static void close() throws IOException {
if (admin != null) {
admin.close();
}
if (connection != null) {
connection.close();
}
}
- 判断表是否存在
- @param tableName
- @return
- @throws IOException
*/
public static boolean isTableExsit(String tableName) throws IOException {
boolean exists = admin.tableExists(TableName.valueOf(tableName));
return exists;
}
- 创建表
- @param tableName
- @param cf
*/
public static void createTable(String tableName, String... cf) throws IOException {
if (isTableExsit(tableName)) {
// new IllegalArgumentException("表已经存在,在点我就报警了!");
System.out.println("表已经存在,在点我就报警了!");
return;
}
if (cf.length <= 0) {
System.out.println("参数异常!");
return;
}
HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf(tableName));
for (String s : cf) {
HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(s);
descriptor.addFamily(hColumnDescriptor);
}
admin.createTable(descriptor);
}
- 删除表
- @param tableName
- @throws IOException
*/
public static void deleteTable(String tableName) throws IOException {
if (!isTableExsit(tableName)) {
System.out.println("表不存在!");
return;
}
admin.disableTable(TableName.valueOf(tableName));
admin.deleteTable(TableName.valueOf(tableName));
}
- 创建命名空间
- @param nameSpace
- @throws IOException
*/
public static void createNameSpace(String nameSpace) throws IOException {
try {
NamespaceDescriptor build = NamespaceDescriptor.create(nameSpace).build();
admin.createNamespace(build);
} catch (NamespaceExistException e) {
System.out.println(nameSpace + "此命名空间已经存在!");
} catch (IOException e) {
e.printStackTrace();
}
}
// =====================================>我是华丽分割线===================================>
/**- 添加数据
- @param tableName
- @param cf
- @param cn
- @param value
*/
public static void put(String tableName, String rk, String cf, String cn, String value) throws IOException {
// 创建表对象
Table table = connection.getTable(TableName.valueOf(tableName));
// 声明put对象
Put putObject = new Put(Bytes.toBytes(rk));
// 向put对象中添加值
putObject.addColumn(Bytes.toBytes(cf), Bytes.toBytes(cn), Bytes.toBytes(value));
// putObject.addColumn(Bytes.toBytes("info"), Bytes.toBytes("sex"), Bytes.toBytes("female"));
// 向表中添加数据
table.put(putObject);
// 关闭
table.close();
}
- 查询数据 ---》 get
- @param tableName
- @param rk
- @throws IOException
*/
public static void get(String tableName, String rk) throws IOException {
// 1. 获取对象
Table table = connection.getTable(TableName.valueOf(tableName));
// 2. 获得get对象
Get getObject = new Get(Bytes.toBytes(rk));
// 3. 获取查询结果
Result result = table.get(getObject);
// 4. 遍历获取单个cell并打印
for (Cell cell : result.rawCells()) {
System.out.println("RK : " + Bytes.toString(CellUtil.cloneRow(cell)) +
", CF : " + Bytes.toString(CellUtil.cloneFamily(cell)) +
", CN : " + Bytes.toString(CellUtil.cloneQualifier(cell)) +
", Value : " + Bytes.toString(CellUtil.cloneValue(cell)));
}
// 5. 释放资源
table.close();
}
- 查询数据 ---> scan
- @param tableName
- @throws IOException
*/
public static void scan(String tableName) throws IOException {
// 1. 获取表对象
Table table = connection.getTable(TableName.valueOf(tableName));
// 2. 创建Scan对象
Scan scanObject = new Scan(Bytes.toBytes("1001"), Bytes.toBytes("1003"));
// 3. 查询数据并获取结果
ResultScanner scanner = table.getScanner(scanObject);
// 4. 遍历
for (Result result : scanner) {
for (Cell cell : result.rawCells()) {
System.out.println("RK : " + Bytes.toString(CellUtil.cloneRow(cell)) +
", CF : " + Bytes.toString(CellUtil.cloneFamily(cell)) +
", CN : " + Bytes.toString(CellUtil.cloneQualifier(cell)) +
", Value : " + Bytes.toString(CellUtil.cloneValue(cell)));
}
}
// 5. 释放资源
table.close();
}
- 删除数据 ---> delete
- @param tableName
- @param rk
*/
public static void delete(String tableName, String rk) throws IOException {
// 1. 获取表对象
Table table = connection.getTable(TableName.valueOf(tableName));
// 2. 执行删除逻辑
Delete deleteObject = new Delete(Bytes.toBytes(rk));
table.delete(deleteObject);
// 2. 释放资源
table.close();
}
- 测试Api
- @param args
*/
public static void main(String[] args) throws IOException {
// 1. 测试表是否存在
// System.out.println(isTableExsit("employee"));
// 2. 创建表
// createTable("user", "info", "name");
// 3. 删除表
// deleteTable("user");
// 4. 创建命名空间
// createNameSpace("1703");
// 5. 插入数据
// put("user", "1003", "info", "name", "qiaoyuan2");
// 6. 查询数据 get
// get("user", "1001");
// 7. 查询数据 scan
// scan("user");
// 8. 删除数据 delete
delete("user", "1003");
// 释放资源
close();
}
}