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

Kevin Ludwig commented on HIVE-10990:
-------------------------------------

so my create table is this:

bash-4.1# cat hbasetest.hql                                                 
CREATE TABLE hbasetest(key string, val string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES("hbase.table.name" = "xyz");
bash-4.1#

And when I run it I get this:

bash-4.1# beeline -n hive -u jdbc:hive2://localhost:10001 -f ./hbasetest.hql
Connecting to jdbc:hive2://localhost:10001
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://localhost:10001> set hbase.zookeeper.quorum=zookeeper;
No rows affected (0.081 seconds)
0: jdbc:hive2://localhost:10001> 
0: jdbc:hive2://localhost:10001> CREATE TABLE hbasetest(key string, val string)
0: jdbc:hive2://localhost:10001> STORED BY 
'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
0: jdbc:hive2://localhost:10001> WITH SERDEPROPERTIES("hbase.columns.mapping" = 
":key,cf1:val")
0: jdbc:hive2://localhost:10001> TBLPROPERTIES("hbase.table.name" = "xyz");
Error: Error while processing statement: FAILED: Execution Error, return code 1 
from org.apache.hadoop.hive.ql.exec.DDLTask. 
org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)V
 (state=08S01,code=1)

Closing: 0: jdbc:hive2://localhost:10001
bash-4.1#

And with verbose i get this:

bash-4.1# beeline -n hive -u jdbc:hive2://localhost:10001 -f ./hbasetest.hql 
--verbose
issuing: !connect jdbc:hive2://localhost:10001 hive '' 
Connecting to jdbc:hive2://localhost:10001
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://localhost:10001> set hbase.zookeeper.quorum=zookeeper;
Getting log thread is interrupted, since query is done!
No rows affected (0.078 seconds)
0: jdbc:hive2://localhost:10001> 
0: jdbc:hive2://localhost:10001> CREATE TABLE hbasetest(key string, val string)
0: jdbc:hive2://localhost:10001> STORED BY 
'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
0: jdbc:hive2://localhost:10001> WITH SERDEPROPERTIES("hbase.columns.mapping" = 
":key,cf1:val")
0: jdbc:hive2://localhost:10001> TBLPROPERTIES("hbase.table.name" = "xyz");
Getting log thread is interrupted, since query is done!
Error: Error while processing statement: FAILED: Execution Error, return code 1 
from org.apache.hadoop.hive.ql.exec.DDLTask. 
org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)V
 (state=08S01,code=1)
java.sql.SQLException: Error while processing statement: FAILED: Execution 
Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. 
org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)V
        at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:296)
        at org.apache.hive.beeline.Commands.execute(Commands.java:848)
        at org.apache.hive.beeline.Commands.sql(Commands.java:713)
        at org.apache.hive.beeline.BeeLine.dispatch(BeeLine.java:973)
        at org.apache.hive.beeline.BeeLine.execute(BeeLine.java:813)
        at org.apache.hive.beeline.BeeLine.executeFile(BeeLine.java:794)
        at org.apache.hive.beeline.BeeLine.begin(BeeLine.java:763)
        at 
org.apache.hive.beeline.BeeLine.mainWithInputRedirection(BeeLine.java:484)
        at org.apache.hive.beeline.BeeLine.main(BeeLine.java:467)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

Closing: 0: jdbc:hive2://localhost:10001
bash-4.1#

In a prior comment [~swarnim] suggested the error originates from 
https://github.com/apache/hive/blob/release-1.2.0/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HBaseStorageHandler.java#L214,
 but I don't think this is the case. Because I can force the addFamily method 
to throw by omitting a column family from "hbase.columns.mapping", and I get a 
stack trace that points to the code referenced earlier:

bash-4.1# beeline -n hive -u jdbc:hive2://localhost:10001 -f ./hbasetest.hql    
      
Connecting to jdbc:hive2://localhost:10001
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://localhost:10001> set hbase.zookeeper.quorum=zookeeper;
No rows affected (0.079 seconds)
0: jdbc:hive2://localhost:10001> 
0: jdbc:hive2://localhost:10001> CREATE TABLE hbasetest(key string, val string)
0: jdbc:hive2://localhost:10001> STORED BY 
'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
0: jdbc:hive2://localhost:10001> WITH SERDEPROPERTIES("hbase.columns.mapping" = 
":key,:val")
0: jdbc:hive2://localhost:10001> TBLPROPERTIES("hbase.table.name" = "xyz");
Error: Error while processing statement: FAILED: Execution Error, return code 1 
from org.apache.hadoop.hive.ql.exec.DDLTask. 
MetaException(message:java.lang.IllegalArgumentException: Family name can not 
be empty
        at 
com.google.common.base.Preconditions.checkArgument(Preconditions.java:88)
        at 
org.apache.hadoop.hbase.HColumnDescriptor.isLegalFamilyName(HColumnDescriptor.java:487)
        at 
org.apache.hadoop.hbase.HColumnDescriptor.<init>(HColumnDescriptor.java:440)
        at 
org.apache.hadoop.hbase.HColumnDescriptor.<init>(HColumnDescriptor.java:398)
        at 
org.apache.hadoop.hbase.HColumnDescriptor.<init>(HColumnDescriptor.java:366)
        at 
org.apache.hadoop.hbase.HColumnDescriptor.<init>(HColumnDescriptor.java:317)
        at 
org.apache.hadoop.hive.hbase.HBaseStorageHandler.preCreateTable(HBaseStorageHandler.java:214)
        at 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.createTable(HiveMetaStoreClient.java:664)
        at 
org.apache.hadoop.hive.metastore.HiveMetaStoreClient.createTable(HiveMetaStoreClient.java:657)
        at sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at 
org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.invoke(RetryingMetaStoreClient.java:156)
        at com.sun.proxy.$Proxy6.createTable(Unknown Source)
        at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:714)
        at org.apache.hadoop.hive.ql.exec.DDLTask.createTable(DDLTask.java:4135)
        at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:306)
        at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:160)
        at 
org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:88)
        at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1653)
        at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1412)
        at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1195)
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1059)
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1054)
        at 
org.apache.hive.service.cli.operation.SQLOperation.runQuery(SQLOperation.java:154)
        at 
org.apache.hive.service.cli.operation.SQLOperation.access$100(SQLOperation.java:71)
        at 
org.apache.hive.service.cli.operation.SQLOperation$1$1.run(SQLOperation.java:206)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at 
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
        at 
org.apache.hive.service.cli.operation.SQLOperation$1.run(SQLOperation.java:218)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
) (state=08S01,code=1)

Closing: 0: jdbc:hive2://localhost:10001
bash-4.1#


> Compatibility Hive-1.2 an hbase-1.0.1.1
> ---------------------------------------
>
>                 Key: HIVE-10990
>                 URL: https://issues.apache.org/jira/browse/HIVE-10990
>             Project: Hive
>          Issue Type: Bug
>          Components: Beeline, HBase Handler, HiveServer2
>    Affects Versions: 1.2.0
>            Reporter: gurmukh singh
>            Assignee: Swarnim Kulkarni
>
> Hive external table works fine with Hbase.
> Hive-1.2 and hbase-1.0.1.1, hadoop-2.5.2
> Not able to create a table from hive in hbase.
> 1: jdbc:hive2://edge1.dilithium.com:10000/def> TBLPROPERTIES 
> ("hbase.table.name" = "xyz");
> FAILED: Execution Error, return code 1 from 
> org.apache.hadoop.hive.ql.exec.DDLTask. 
> org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)V
> Error: Error while processing statement: FAILED: Execution Error, return code 
> 1 from org.apache.hadoop.hive.ql.exec.DDLTask. 
> org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)V
>  (state=08S01,code=1)
> [hdfs@edge1 cluster]$ hive
> 2015-06-12 17:56:49,952 WARN  [main] conf.HiveConf: HiveConf of name 
> hive.metastore.local does not exist
> Logging initialized using configuration in 
> jar:file:/usr/local/cluster/apache-hive-1.2.0-bin/lib/hive-common-1.2.0.jar!/hive-log4j.properties
> SLF4J: Class path contains multiple SLF4J bindings.
> SLF4J: Found binding in 
> [jar:file:/usr/local/cluster/apache-hive-1.2.0-bin/auxlib/slf4j-log4j12-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> SLF4J: Found binding in 
> [jar:file:/usr/local/cluster/hadoop-2.5.2/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an 
> explanation.
> SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
> hive> CREATE TABLE hbase_table_1(key int, value string)
>     > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
>     > WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
>     > TBLPROPERTIES ("hbase.table.name" = "xyz");
> FAILED: Execution Error, return code 1 from 
> org.apache.hadoop.hive.ql.exec.DDLTask. 
> org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)V
> =======================
> scan complete in 1535ms
> 14 driver classes found
> Compliant Version Driver Class
> no        5.1     com.mysql.jdbc.Driver
> no        5.1     com.mysql.jdbc.NonRegisteringDriver
> no        5.1     com.mysql.jdbc.NonRegisteringReplicationDriver
> no        5.1     com.mysql.jdbc.ReplicationDriver
> yes       1.2     org.apache.calcite.avatica.remote.Driver
> yes       1.2     org.apache.calcite.jdbc.Driver
> yes       1.0     org.apache.commons.dbcp.PoolingDriver
> yes       10.11   org.apache.derby.jdbc.AutoloadedDriver
> yes       10.11   org.apache.derby.jdbc.Driver42
> yes       10.11   org.apache.derby.jdbc.EmbeddedDriver
> yes       10.11   org.apache.derby.jdbc.InternalDriver
> no        1.2     org.apache.hive.jdbc.HiveDriver
> yes       1.0     org.datanucleus.store.rdbms.datasource.dbcp.PoolingDriver
> no        5.1     org.gjt.mm.mysql.Driver



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to