如何创建2+hbase表?

xvw2m8pv  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(305)

我试图创建2个hbase表,但遇到了一些问题。这是我到目前为止的情况。未正确创建表。我能在网上找到的唯一教程和帮助是关于创建一个hbase表而不是2+hbase表的。
更新:
我正在使用hortonworks沙盒HDP2.3.2。
我不知道如何创建两个表而不调用表描述符表两次来创建holiday表和group表
我使用的教程是:https://www.tutorialspoint.com/hbase/hbase_create_table.htm
创建公共类表{

public static void main(String[] args) throws IOException {

    Configuration config = HBaseConfiguration.create();
    HBaseAdmin admin = new HBaseAdmin(config);

    HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf("holidays"));

    tableDescriptor.addFamily(new HColumnDescriptor("observed"));
    tableDescriptor.addFamily(new HColumnDescriptor("date"));

    admin.createTable(tableDescriptor);

    HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf("group"));

    tableDescriptor.addFamily(new HColumnDescriptor("type"));
    tableDescriptor.addFamily(new HColumnDescriptor("size"));
    admin.createTable(tableDescriptor);
}

}

uemypmqf

uemypmqf1#

我成功地编写了一些代码,并正确地插入了两个带有列的表。我正在使用cloudera cdh5 hadoop发行版。
这是一个示例类,用于创建具有列族的表:

public class HBaseOps {

    public static void createTable(Connection conn, String tableName, String... families) throws IOException {

        Admin admin = conn.getAdmin();
        HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf(tableName));

        for(String family : families) {
            tableDescriptor.addFamily(new HColumnDescriptor(family));
        }
        admin.createTable(tableDescriptor);
    }
}

您可以调用上面的代码来创建表:

//Connect to hbase
    Configuration config = HBaseConfiguration.create();
    Connection connection = ConnectionFactory.createConnection(config);

    //Create table
    final String TABLE1 = "table1";
    final String FAMILY1 = "family1";
    final String FAMILY2 = "family2";
    HBaseOps.createTable(connection, TABLE1, FAMILY1, FAMILY2);

    //Create table
    final String TABLE2 = "table2";
    final String FAMILY3 = "family3";
    final String FAMILY4 = "family4";
    HBaseOps.createTable(connection, TABLE2, FAMILY3, FAMILY4);

您可以在我的github上找到完整的示例:我在github上用hbase shell测试了完整的代码,并且正确地创建了表。

相关问题