hive-jdbc-__-standalone.jar 的正确位置是啥?

Posted

技术标签:

【中文标题】hive-jdbc-__-standalone.jar 的正确位置是啥?【英文标题】:What is the proper location for hive-jdbc-__-standalone.jar?hive-jdbc-__-standalone.jar 的正确位置是什么? 【发布时间】:2016-02-15 02:15:33 【问题描述】:

本指南设置 hive 0.14: http://www.ishaanguliani.com/content/hive-0140-setup-ubuntu

建议如果出现错误:

Logging initialized using configuration in jar:file:/usr/local/hive/lib/hive-common-0.14.0.jar!/hive-log4j.properties
SLF4J: Class path contains multiple SLF4J bindings.

遇到文件 hive-jdbc-0.14.0-standalone.jar 必须从 $HIVE_HOME/lib/ 中移出

但是当我运行beeline时,由于文件不存在而出错:

$ $HIVE_HOME/bin/beeline -u jdbc:hive2://localhost:10000
ls: cannot access /usr/local/hive/lib/hive-jdbc-*-standalone.jar: No such file or directory

什么是正确的做法?

【问题讨论】:

SLF4J 警告是一个小麻烦。现在每个 Java 混蛋(和他的狗)都想在他的 JAR 中捆绑实用程序类,以便您在 CLASSPATH 中获得所有内容的多个版本。只有 SLF4J 发出警告,其余的不关心,那场战斗早就输了,Maven 规则,所有 Hadoop 发行版都是一团糟。 底线:只需学会忽略multiple SLF4J bindings 消息,就像您忽略网页上的广告一样。 【参考方案1】:

您可以执行以下任何操作 执行以下任何操作

RCA:在 hive2.1 中,hive-jdbc-*-standalone.jar 文件在 $HIVE_LIB 中不存在,但在 $HIVE_HOME/jdbc 目录中。

** 系统规范 ** hive-2.1 二进制 java1.8 CentOS Linux release 7.1.1503 (Core)

可能的解决方案

    将 jar 文件复制到脚本预期的目录。 容易,但我不喜欢保留多个文件

    bash# cp $HIVE_HOME/jdbc/hive-jdbc-2.1.0-standalone.jar $HIVE_HOME/lib/hive-jdbc-2.1.0-standalone.jar

    创建指向 jar 文件的链接以指向脚本预期的目录 (我的首选方法)。 bash# ln -s $HIVE_HOME/jdbc/hive-jdbc-2.1.0-standalone.jar $HIVE_HOME/lib/hive-jdbc-2.1.0-standalone.jar

    编辑文件 $HIVE_HOME/bin/ext/beeline.sh

    bash# vi +27 $HIVE_HOME/bin/ext/beeline.sh

编辑行

jdbcStandaloneJarPath=`ls $HIVE_LIB/hive-jdbc-*-standalone.jar`


to

jdbcStandaloneJarPath=`ls $HIVE_HOME/jdbc/hive-jdbc-*-standalone.jar`

【讨论】:

以上是关于hive-jdbc-__-standalone.jar 的正确位置是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 里面引入hive-jdbc包,依赖冲突,tomcat启动不了

使用HIVE-JDBC+TOMCAT-JDBC连接(CONNECTION)中断的处理过程

关于hive ,eclipse老是提示加载不到驱动

Hive---JDBC

Apache Drill - hiveserver2 jdbc 错误

Hive JDBC 操作 例子