java - Hbase Java API TableNotDisabledException

标签 java hadoop hbase nosql

我已在本地系统上配置了 Apache hbase 0.94.14。我必须通过 java API 与 hbase 进行通信。我编写了简单的代码来在现有 hbase 表中添加新的列族。

Java 类代码

         // Instantiating configuration class.
        Configuration conf = HBaseConfiguration.create();
        // Instantiating HBaseAdmin class.
        HBaseAdmin admin = new HBaseAdmin(conf);

        // Instantiating columnDescriptor class
        HColumnDescriptor columnDescriptor =new
        HColumnDescriptor("contactDetails");
        // Adding column family
        admin.addColumn("local_webpage", columnDescriptor);
        System.out.println("column added");

当我运行此代码时,发生以下异常。

16/08/11 14:07:37 INFO zookeeper.ClientCnxn: EventThread shut down
Exception in thread "main" org.apache.hadoop.hbase.TableNotDisabledException: org.apache.hadoop.hbase.TableNotDisabledException: local_webpage
    at org.apache.hadoop.hbase.master.HMaster.checkTableModifiable(HMaster.java:1525)
    at org.apache.hadoop.hbase.master.handler.TableEventHandler.<init>(TableEventHandler.java:72)
    at org.apache.hadoop.hbase.master.handler.TableAddFamilyHandler.<init>(TableAddFamilyHandler.java:41)
    at org.apache.hadoop.hbase.master.HMaster.addColumn(HMaster.java:1402)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:323)
    at org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1426)

    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at org.apache.hadoop.hbase.RemoteExceptionHandler.decodeRemoteException(RemoteExceptionHandler.java:96)
    at org.apache.hadoop.hbase.client.HBaseAdmin.addColumn(HBaseAdmin.java:1071)
    at org.apache.hadoop.hbase.client.HBaseAdmin.addColumn(HBaseAdmin.java:1054)
    at hbaseclient.HbaseClient.main(HbaseClient.java:44)
/home/user/.cache/netbeans/8.1/executor-snippets/run.xml:53: Java returned: 1

如果我通过 hbase shell 添加列族,则不会出现问题。哪里有问题。正在通过 Apache Nutch 2.3.1 创建表

最佳答案

您必须先禁用该表,然后才能向其中添加族。

HBaseAdmin#disableTable()...

我认为这是您解决异常的唯一问题。

关于java - Hbase Java API TableNotDisabledException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38892091/

相关文章:

HBase/Phoenix 的 ODBC 驱动程序

hadoop - 使用 MultiTableInputFormat 获取正在扫描的当前表的名称

Java 日历日期操作问题

java - 根据窗口的屏幕分辨率调整图像

hadoop - Apache Hadoop 版本 1.0.3 使用哪些端口进行守护进程的集群内通信

python - Spark 异常 : Python worker did not connect back in time

java - 如何将拍摄的图像放在特定的 ImageView 中

java - ognl.ExpressionSyntaxException

java - Hadoop:OutputCollector 在MapReduce 中是如何工作的?

hbase - 为什么 OpenTSDB 选择 HBase 进行时序数据存储?