Как я могу создать 2+ таблицы HBase? - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь создать 2 таблицы HBase, но сталкиваюсь с некоторыми проблемами.Вот что у меня так далеко.Таблицы не создаются правильно.Единственные учебные пособия и помощь, которые я могу найти в Интернете, касаются создания ОДНОЙ таблицы HBase, а не таблиц 2+ HBase.

Обновления:

  • Я использую HortonWorks Sandbox HDP 2.3.2.
  • Я не уверен, как я могу создать 2 таблицы без двойного вызова таблицы дескрипторов таблиц для создания таблицы праздников и таблицы групп
  • Учебное пособие, которое я использую,: https://www.tutorialspoint.com/hbase/hbase_create_table.htm

    открытый класс TableCreation {

    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);
    }
    

    }

1 Ответ

0 голосов
/ 04 марта 2019

Мне удалось написать некоторый код, который работает и правильно вставляет 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 и таблицы созданы правильно.

...