如何创建 2+ HBase 表?
How can I create 2+ HBase tables?
我正在尝试创建 2 个 HBase table,但 运行 遇到了一些问题。这是我到目前为止所拥有的。 table 未正确创建。我能在网上找到的唯一教程和帮助是关于创建一个 HBase table 而不是 2+ HBase table。
更新:
- 我正在使用 HortonWorks Sandbox HDP 2.3.2。
- 我不确定如何在不调用 Table 描述符 table 的情况下创建 2 tables 来创建假期 table 和组 table
我使用的教程是:https://www.tutorialspoint.com/hbase/hbase_create_table.htm
public class Table创作{
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 table 列。我正在使用 Cloudera CDH5 Hadoop 发行版。
这是一个示例 class,它创建了一个 table 列族:
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);
}
}
您可以调用上面的代码来创建 tables:
//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 中找到完整示例:
Full Code on Github
我使用 hbase shell 进行了测试,table 已正确创建。
我正在尝试创建 2 个 HBase table,但 运行 遇到了一些问题。这是我到目前为止所拥有的。 table 未正确创建。我能在网上找到的唯一教程和帮助是关于创建一个 HBase table 而不是 2+ HBase table。
更新:
- 我正在使用 HortonWorks Sandbox HDP 2.3.2。
- 我不确定如何在不调用 Table 描述符 table 的情况下创建 2 tables 来创建假期 table 和组 table
我使用的教程是:https://www.tutorialspoint.com/hbase/hbase_create_table.htm
public class Table创作{
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 table 列。我正在使用 Cloudera CDH5 Hadoop 发行版。
这是一个示例 class,它创建了一个 table 列族:
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);
}
}
您可以调用上面的代码来创建 tables:
//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 中找到完整示例: Full Code on Github 我使用 hbase shell 进行了测试,table 已正确创建。