我正在尝试使用Hive并使用'use db'命令切换数据库。我的设置是Hadoop 2.4.0和Hive 0.13.1。我将以下3个属性添加到.settings文件
set hive.exec.failure.hooks=org.apache.hadoop.hive.ql.hooks.ATSHook;
set hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.ATSHook;
set hive.exec.pre.hooks=org.apache.hadoop.hive.ql.hooks.ATSHook;
然后打开hive命令行,通过'hive -i my.settings'传入.settings文件然后我得到:
hive> use db;
hive.exec.pre.hooks Class not found:org.apache.hadoop.hive.ql.hooks.ATSHook
FAILED: Hive Internal Error: java.lang.ClassNotFoundException(org.apache.hadoop.hive.ql.hooks.ATSHook)
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
似乎我的类路径中缺少一个jar。我试着在网上搜索一个包含“org.apache.hadoop.hive.ql.hooks.ATSHook”类的jar,但没有运气。我尝试通过以下方法将所有带有jar的路径从HIVE_HOME添加到yarn-site.xml:
<property>
<name>yarn.application.classpath</name>
<value>
...
/apps/hive/hive-0.13.1/hcatalog/share/hcatalog/*,
/apps/hive/hive-0.13.1/hcatalog/share/hcatalog/storage-handlers/hbase/lib/*,
/apps/hive/hive-0.13.1/hcatalog/share/webhcat/java-client/*,
/apps/hive/hive-0.13.1/hcatalog/share/webhcat/svr/lib/*,
/apps/hive/hive-0.13.1/lib/*
</value>
</property>
仍然没有运气。有谁知道我需要做一些额外的步骤来配置这些属性吗?
答案 0 :(得分:1)
显然这个罐子只能在尚未发布的Hive 0.14.0中使用。因此,我必须根据Hive Wiki上的说明下载并构建Hive。这很简单:
mvn clean install -DskipTests -Phadoop-2
一旦建成,我就能做到:
hive> add jar <HIVE_HOME>/ql/target
> ;
或者将此属性添加到hive-site.xml
<property>
<name>hive.aux.jars.path</name>
<value>file:///<HIVE_HOME>/ql/target/hive-exec-0.14.0-SNAPSHOT.jar</value>
</property>
我还找到了关于plugins的精彩幻灯片分享演示文稿。