[
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)