You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Edward Capriolo (JIRA)" <ji...@apache.org> on 2013/10/11 06:54:45 UTC

[jira] [Commented] (HIVE-5518) ADD JAR should add entries to local classpath

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

Edward Capriolo commented on HIVE-5518:
---------------------------------------

Lets look into this. I do not see a reason why the auxpath and add jar list can not be combined. It sure would make many things easier.

> ADD JAR should add entries to local classpath
> ---------------------------------------------
>
>                 Key: HIVE-5518
>                 URL: https://issues.apache.org/jira/browse/HIVE-5518
>             Project: Hive
>          Issue Type: Bug
>          Components: CLI
>    Affects Versions: 0.12.0
>            Reporter: Nick Dimiduk
>
> Jars referenced in {{ADD JAR}} statements are not made available on the immediate classpath. That means they're useless for scripts which need to initialize external output formats for job submission (ie, hbase storage handler). Is this expected behavior?
> For example, the table 'pagecounts_hbase' is an hbase table defined using the HBaseStorageHandler
> {noformat}
> $ cat foo.hql
> ADD FILE /etc/hbase/conf/hbase-site.xml;
> ADD JAR /usr/lib/hbase/lib/hbase-common-0.96.0.2.0.6.0-68-hadoop2.jar;
> ADD JAR /usr/lib/hbase/lib/hbase-server-0.96.0.2.0.6.0-68-hadoop2.jar;
> ADD JAR /usr/lib/hbase/lib/hbase-client-0.96.0.2.0.6.0-68-hadoop2.jar;
> ADD JAR /usr/lib/hbase/lib/hbase-protocol-0.96.0.2.0.6.0-68-hadoop2.jar;
> FROM pgc INSERT INTO TABLE pagecounts_hbase SELECT pgc.* WHERE rowkey LIKE 'en/q%' LIMIT 10;
> $ hive -f foo.hql
> ...
> Added resource: /etc/hbase/conf/hbase-site.xml
> Added /usr/lib/hbase/lib/hbase-common-0.96.0.2.0.6.0-68-hadoop2.jar to class path
> Added resource: /usr/lib/hbase/lib/hbase-common-0.96.0.2.0.6.0-68-hadoop2.jar
> ...
> Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/mapreduce/TableInputFormatBase                                                                                [29/1858]
>         at java.lang.ClassLoader.defineClass1(Native Method)
>         at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
>         at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
>         at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
>         at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
>         at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
>         at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
>         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:410)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:410)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:410)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:410)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:410)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:410)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
>         at java.lang.Class.forName0(Native Method)
>         at java.lang.Class.forName(Class.java:266)
>         at org.apache.hadoop.hive.ql.metadata.Table.getInputFormatClass(Table.java:305)
>         at org.apache.hadoop.hive.ql.metadata.Table.<init>(Table.java:98)
>         at org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:989)
>         at org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:892)
>         at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer$tableSpec.<init>(BaseSemanticAnalyzer.java:730)
>         at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer$tableSpec.<init>(BaseSemanticAnalyzer.java:707)
>         at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:1196)
>         at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:1053)
>         at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:8342)
>         at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:284)
>         at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:441)
>         at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:342)
>         at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:977)
>         at org.apache.hadoop.hive.ql.Driver.run(Driver.java:888)
>         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.processLine(CliDriver.java:348)
>         at org.apache.hadoop.hive.cli.CliDriver.processReader(CliDriver.java:446)
>         at org.apache.hadoop.hive.cli.CliDriver.processFile(CliDriver.java:456)
>         at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:737)
>         at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)
>         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:57)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:601)
>         at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
> Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.mapreduce.TableInputFormatBase
>         at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>         at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
>         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
>         ... 48 more
> {noformat}
> The ADDed jar hbase-server.jar contains the missing class:
> {noformat}
> $ unzip -l /usr/lib/hbase/lib/hbase-server-0.96.0.2.0.6.0-68-hadoop2.jar | grep TableInputFormatBase
>      5363  10-09-2013 19:45   org/apache/hadoop/hbase/mapred/TableInputFormatBase.class
>      7460  10-09-2013 19:45   org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatBase.class
>      8803  10-09-2013 19:45   org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.class
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.1#6144)