簡體   English   中英

如何創建 2 個以上的 HBase 表?

[英]How can I create 2+ HBase tables?

我正在嘗試創建 2 個 HBase 表,但遇到了一些問題。 這是我到目前為止所擁有的。 表未正確創建。 我可以在網上找到的唯一教程和幫助是創建一個 HBase 表而不是 2 個以上的 HBase 表。

更新:

  • 我使用的是 HortonWorks Sandbox HDP 2.3.2。
  • 我不確定如何在不調用表描述符表兩次來創建假日表和組表的情況下創建 2 個表
  • 我使用的教程是: 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); }

    }

我設法編寫了一些有效的代碼,並正確插入了 2 個帶有列的表。 我正在使用 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 進行了測試,並且表已正確創建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM