hive-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Emmanuel Guiton (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HIVE-3894) Dropping managed HBase table fails
Date Fri, 10 Jan 2014 09:31:51 GMT

    [ https://issues.apache.org/jira/browse/HIVE-3894?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13867657#comment-13867657
] 

Emmanuel Guiton commented on HIVE-3894:
---------------------------------------

Hello,
I just ran into the same issue.
I created a table using Hive (0.10) :
{code}
create table is_mappings(key struct<id:int, name: string>, props map<string, string>)

stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
with serdeproperties ("hbase.columns.mapping"=":key, p:") 
tblproperties ("hbase.table.name"="is_mappings");
{code}

Then I ran
{code}hive> DROP TABLE is_mappings;{code}

which resulted in
{code}
FAILED: Error in metadata: MetaException(message:org.apache.hadoop.hbase.TableNotDisabledException:
org.apache.hadoop.hbase.TableNotDisabledException: is_mappings
        at org.apache.hadoop.hbase.master.HMaster.checkTableModifiable(HMaster.java:1508)
        at org.apache.hadoop.hbase.master.handler.TableEventHandler.<init>(TableEventHandler.java:72)
        at org.apache.hadoop.hbase.master.handler.DeleteTableHandler.<init>(DeleteTableHandler.java:47)
        at org.apache.hadoop.hbase.master.HMaster.deleteTable(HMaster.java:1358)
        at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:320)
        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:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at org.apache.hadoop.hbase.RemoteExceptionHandler.decodeRemoteException(RemoteExceptionHandler.java:96)
        at org.apache.hadoop.hbase.client.HBaseAdmin.deleteTable(HBaseAdmin.java:482)
        at org.apache.hadoop.hbase.client.HBaseAdmin.deleteTable(HBaseAdmin.java:465)
        at org.apache.hadoop.hive.hbase.HBaseStorageHandler.commitDropTable(HBaseStorageHandler.java:120)
        at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.dropTable(HiveMetaStoreClient.java:599)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.invoke(RetryingMetaStoreClient.java:74)
        at com.sun.proxy.$Proxy10.dropTable(Unknown Source)
        at org.apache.hadoop.hive.ql.metadata.Hive.dropTable(Hive.java:841)
        at org.apache.hadoop.hive.ql.metadata.Hive.dropTable(Hive.java:808)
        at org.apache.hadoop.hive.ql.exec.DDLTask.dropTable(DDLTask.java:3372)
        at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:278)
        at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:138)
        at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:57)
        at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1336)
        at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1122)
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:935)
        at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:259)
        at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:216)
        at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:412)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:755)
        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:613)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:160)
)
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
{code}

When executing
{code}hive> show tables;{code}

the table does not appear anymore.
However, in HBase the table still exists
{code}
hbase(main):010:0* describe 'is_mappings'
DESCRIPTION                                                                              
                                         ENABLED                                         
                      
 'is_mappings', {NAME => 'p', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', VERSIONS
=> '3', COMPRESSION => 'NONE', MIN_VERSION true                                    
                              
 S => '0', TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE
=> 'true'}                                                                            
                            
1 row(s) in 5.1630 seconds
{code}

And as stated in the exception, the HBase table is still enabled :
{code}
hbase(main):014:0> drop 'is_mappings'

ERROR: Table is_mappings is enabled. Disable it first.'

Here is some help for this command:
Drop the named table. Table must first be disabled: e.g. "hbase> drop 't1'"


hbase(main):015:0> disable 'is_mappings'
0 row(s) in 7.0690 seconds

hbase(main):016:0> drop 'is_mappings'
0 row(s) in 1.1220 seconds
{code}

Version of HBase is
{code}
hbase(main):017:0> version
0.94.10, r1504995, Fri Jul 19 20:24:16 UTC 2013
{code}

> Dropping managed HBase table fails
> ----------------------------------
>
>                 Key: HIVE-3894
>                 URL: https://issues.apache.org/jira/browse/HIVE-3894
>             Project: Hive
>          Issue Type: Bug
>          Components: HBase Handler
>            Reporter: Nick Dimiduk
>            Assignee: Swarnim Kulkarni
>
> {{HBaseStorageHandler}} does not delete managed tables from HBase.
> {code}
> hive> CREATE TABLE foo (bar INT, baz INT) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ('hbase.columns.mapping' = 'f1:baz') TBLPROPERTIES ('hbase.table.name'
= 'foo');
> OK
> Time taken: 1.277 seconds
> hive> drop table foo;
> FAILED: Error in metadata: MetaException(message:org.apache.hadoop.hbase.TableNotDisabledException:
org.apache.hadoop.hbase.TableNotDisabledException: foo
> 	at org.apache.hadoop.hbase.master.HMaster.checkTableModifiable(HMaster.java:1396)
> 	at org.apache.hadoop.hbase.master.handler.TableEventHandler.<init>(TableEventHandler.java:70)
> 	at org.apache.hadoop.hbase.master.handler.DeleteTableHandler.<init>(DeleteTableHandler.java:42)
> 	at org.apache.hadoop.hbase.master.HMaster.deleteTable(HMaster.java:1249)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:364)
> 	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:39)
> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> 	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
> 	at org.apache.hadoop.hbase.RemoteExceptionHandler.decodeRemoteException(RemoteExceptionHandler.java:96)
> 	at org.apache.hadoop.hbase.client.HBaseAdmin.deleteTable(HBaseAdmin.java:482)
> 	at org.apache.hadoop.hbase.client.HBaseAdmin.deleteTable(HBaseAdmin.java:465)
> 	at org.apache.hadoop.hive.hbase.HBaseStorageHandler.commitDropTable(HBaseStorageHandler.java:120)
> 	at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.dropTable(HiveMetaStoreClient.java:599)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.invoke(RetryingMetaStoreClient.java:74)
> 	at $Proxy9.dropTable(Unknown Source)
> 	at org.apache.hadoop.hive.ql.metadata.Hive.dropTable(Hive.java:846)
> 	at org.apache.hadoop.hive.ql.metadata.Hive.dropTable(Hive.java:813)
> 	at org.apache.hadoop.hive.ql.exec.DDLTask.dropTable(DDLTask.java:3398)
> 	at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:279)
> 	at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:138)
> 	at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:57)
> 	at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1334)
> 	at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1120)
> 	at org.apache.hadoop.hive.ql.Driver.run(Driver.java:934)
> 	at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:259)
> 	at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:216)
> 	at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:413)
> 	at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:756)
> 	at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:614)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
> )
> FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
> {code}
> The table is gone from Hive metadata though:
> {code}
> hive> show tables;    
> OK
> Time taken: 0.029 seconds
> {code}
> Attempting to recreate it results in the expected:
> {code}
> hive> CREATE TABLE foo (bar INT, baz INT) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ('hbase.columns.mapping' = 'f1:baz') TBLPROPERTIES ('hbase.table.name'
= 'foo');
> FAILED: Error in metadata: MetaException(message:Table foo already exists within HBase;
use CREATE EXTERNAL TABLE instead to register it in Hive.)
> FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
> {code}



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Mime
View raw message