# 创建 Admin 对象

private static Connection connection = null;
private static Admin admin = null;
static {
    try {
        // 获取配置文件信息
        Configuration configuration = HBaseConfiguration.create();
        configuration.set("hbase.zookeeper.quorum", "hadoop02,hadoop03,hadoop04");
        // 创建连接对象
        connection = ConnectionFactory.createConnection(configuration);
        // 创建 Admin 对象
        admin = connection.getAdmin();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

# 判断表是否存在

private static boolean isTableExist(String tableName) throws IOException {
    // 判断表是否存在
    boolean exists = admin.tableExists(TableName.valueOf(tableName));
    // 返回结果
    return exists;
}

# 创建表

private static void createTable(String tableName, String... cfs) throws IOException {
    // 判断是否存在列族信息
    if (cfs.length <= 0) {
        System.out.println("请设置列族信息!");
        return;
    }
    // 判断表是否存在
    if (isTableExist(tableName)) {
        System.out.println(tableName + " 表已经存在");
        return;
    }
    // 创建表描述其
    HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf(tableName));
    // 循环添加列族信息
    for (String cf : cfs) {
        // 创建列族描述器
        HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(cf);
        // 添加具体的列族信息
        hTableDescriptor.addFamily(hColumnDescriptor);
    }
    // 创建表
    admin.createTable(hTableDescriptor);
}

# 删除表

private static void dropTable(String tableName) throws IOException {
    // 判断表是否存在
    if (!isTableExist(tableName)) {
        System.out.println(tableName + "表不存在");
        return;
    }
    // 使表下线
    admin.disableTable(TableName.valueOf(tableName));
    // 删除表
    admin.deleteTable(TableName.valueOf(tableName));
}

# 创建命名空间

private static void createNameSpace(String ns) {
    // 创建命名空间描述器
    NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create(ns).build();
    // 创建命令空间
    try {
        admin.createNamespace(namespaceDescriptor);
    } catch(NamespaceExistException e) {
        System.out.println(ns + "命名空间已存在");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

# 关闭资源

private static void close() {
    if (admin != null) {
        try {
            admin.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    if (connection != null) {
        try {
            connection.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

# 测试

public static void main(String[] args) throws IOException {
    // 测试表是否存在
//        System.out.println(isTableExist("stu"));
    // 创建表测试
    createTable("yain:stu", "info");
    // 删除表测试
//        dropTable("stu");
//        System.out.println(isTableExist("stu"));
    // 创建命名空间测试
//        createNameSpace("yain");
    // 关闭资源
    close();
}
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

宇凌喵 微信支付

微信支付

宇凌喵 支付宝

支付宝