Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何创建2+;HBase表?_Java_Hadoop_Hbase - Fatal编程技术网

Java 如何创建2+;HBase表?

Java 如何创建2+;HBase表?,java,hadoop,hbase,Java,Hadoop,Hbase,我试图创建2个HBase表,但遇到了一些问题。这是我到目前为止所拥有的。未正确创建表。我能在网上找到的唯一教程和帮助是创建一个HBase表,而不是2个以上的HBase表 更新: 我使用的是HortonWorks沙盒HDP2.3.2 我不知道如何在不调用表描述符表两次的情况下创建两个表,从而创建holiday表和group表 我使用的教程是: 公共类表格创建{ public static void main(String[] args) throws IOException { Con

我试图创建2个HBase表,但遇到了一些问题。这是我到目前为止所拥有的。未正确创建表。我能在网上找到的唯一教程和帮助是创建一个HBase表,而不是2个以上的HBase表

更新:

  • 我使用的是HortonWorks沙盒HDP2.3.2
  • 我不知道如何在不调用表描述符表两次的情况下创建两个表,从而创建holiday表和group表
  • 我使用的教程是:

    公共类表格创建{

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


我成功地编写了一些代码,可以正确地插入两个带列的表。我正在使用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);
您可以在my github上找到完整的示例:
我使用hbase shell进行了测试,并正确创建了表。

您使用的是哪个版本的hbase客户端api?我可以在代码中看到一些问题(config、admin和tableDescriptor声明了两次)。我想知道你的问题是否来自这里,然后再进一步研究。此外,有些api已被弃用,您可能需要更新您的代码。您还收到了什么错误?我已在上面列出了更新:1。我使用的是HortonWorks沙盒HDP2.3.2。2.我不知道如何在不调用表描述符表两次来创建holiday表和group表3的情况下创建2个表。我使用的教程是: