MST

星途 面试题库

面试题:Hbase中HBaseAdmin如何创建一个具有多个列族的表

在HBase中,使用HBaseAdmin创建一个表,要求表名为'test_table',包含两个列族'cf1'和'cf2',请写出实现此功能的代码片段(以Java为例)。
35.1万 热度难度
数据库Hbase

知识考点

AI 面试

面试题答案

一键面试
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.TableDescriptor;
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.hadoop.hbase.io.compress.Compression.Algorithm;
import org.apache.hadoop.hbase.regionserver.BloomType;
import org.apache.hadoop.hbase.util.Bytes;

public class CreateHBaseTable {
    public static void main(String[] args) throws Exception {
        // 创建HBase配置对象
        Configuration conf = HBaseConfiguration.create();
        // 创建HBase连接
        Connection connection = ConnectionFactory.createConnection(conf);
        // 创建HBase管理对象
        Admin admin = connection.getAdmin();

        // 表名
        TableName tableName = TableName.valueOf("test_table");
        // 构建表描述符
        TableDescriptor tableDescriptor = TableDescriptorBuilder.newBuilder(tableName)
              .setColumnFamily(TableDescriptorBuilder.newColumnFamily(Bytes.toBytes("cf1"))
                  .setBloomFilterType(BloomType.ROW)
                  .setCompressionType(Algorithm.GZ))
              .setColumnFamily(TableDescriptorBuilder.newColumnFamily(Bytes.toBytes("cf2"))
                  .setBloomFilterType(BloomType.ROW)
                  .setCompressionType(Algorithm.GZ))
              .build();

        // 创建表
        if (!admin.tableExists(tableName)) {
            admin.createTable(tableDescriptor);
            System.out.println("Table " + tableName + " created successfully.");
        } else {
            System.out.println("Table " + tableName + " already exists.");
        }

        // 关闭资源
        admin.close();
        connection.close();
    }
}