0

我一直在尝试在 Windows 上安装 hive。我有运行 HADOOP 和 SPARK 的 64 位 Windows 8。我有

1.HADOOP_HOME
2.HIVE_HOME
3.SPARK_HOME
4.Platform
5.PATH

所有这些变量都设置在我的系统上。另外,我之前遇到过这些错误

Missing Hive Execution Jar: C:\hadoop1\hadoop-2.7.2\apache-hive-1.2.1-bin/lib/hive-exec-*.jar

我通过编辑 HIVE 的 bin 文件夹中的 Hive 文件解决了这些错误。这些错误是由于 HIVE 文件中环境变量中的正斜杠“/”造成的。我用“\”替换它们,这些错误就消失了。但现在我面临另一个问题。我收到这些错误

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/spark/spark-1.6.1-bin-hadoop2.6/lib/spark-assembly-1.6.1-hadoop2.6.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/hadoop2.7/hadoop-2.7.1/share/hadoop/common/lib/slf4j-log4j12-1.7.10.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]
Beeline version 1.6.1 by Apache Hive
Exception in thread "main" java.lang.NoSuchMethodError: org.fusesource.jansi.internal.Kernel32.GetConsoleOutputCP()I
    at jline.WindowsTerminal.getConsoleOutputCodepage(WindowsTerminal.java:293)
    at jline.WindowsTerminal.getOutputEncoding(WindowsTerminal.java:186)
    at jline.console.ConsoleReader.<init>(ConsoleReader.java:230)
    at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)
    at jline.console.ConsoleReader.<init>(ConsoleReader.java:209)
    at org.apache.hive.beeline.BeeLine.getConsoleReader(BeeLine.java:834)
    at org.apache.hive.beeline.BeeLine.begin(BeeLine.java:770)
    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)

我已经搜索了很多这些。我也在 HIVE 用户邮件列表上发布了这些问题,但没有得到回应。请帮我解决一下这个。

4

1 回答 1

0

以下是我为解决此问题而执行的步骤:

  1. 安装 Microsoft Visual C++ 2008 Redistribuable add-on(不是最新的,不是 SP1...)
  2. 下载 jline-2.12.jar(从任何 maven 存储库站点)并将其放入您的 %SPARK_HOME%\lib 目录
  3. 我假设您已经有一个正确配置了 HADOOP_HOME、HADOOP_CONF_DIR y YARN_CONF_DIR 定义的 hadoop 客户端。您也需要定义 SPARK_HOME
  4. 如果您使用 Cloudera 5.5+ 集群,请下载 Cloudera JDBC Driver for Hive(可用的最新版本)并将 Cloudera_Hive41* 存档解压缩到 %HADOOP_HOME$\share\hadoop\hive(此目录不存在,您需要创建它)。如果您不使用 Cloudera,您可以忘记这一点。
  5. 创建一个新的直线批处理脚本:
@echo off
setLocal EnableDelayedExpansion

Rem Hive Classpath Settings ONLY IF YOU'RE USING CLOUDERA
set HIVE_CLOUDERA_DRIVER_DIR=%HADOOP_HOME%\share\hadoop\hive
set HIVE_CLASSPATH=
for /R %HIVE_CLOUDERA_DRIVER_DIR% %%a in (*.jar) do (
  set HIVE_CLASSPATH=!HIVE_CLASSPATH!;%%a
)
set HIVE_CLASSPATH=!HIVE_CLASSPATH!
Rem IF YOU'RE NOT USING CLOUDERA YOU CAN SKIP THE HIVE_CLASSPATH_STUFF

Rem Spark Classpath Settings
set SPARK_CLASSPATH=
for /R %SPARK_HOME%/lib %%a in (*.jar) do (
  set SPARK_CLASSPATH=!SPARK_CLASSPATH!;%%a
)
set SPARK_CLASSPATH=!SPARK_CLASSPATH!

Rem Hadoop classpath
set HADOOP_CLASSPATH=%HADOOP_CONF_DIR%\;%YARN_CONF_DIR%\\

Rem Java Virtual Machine Options
set JAVA_OPTIONS=-Xms1g -Xmx1g 

Rem Execute Beeline
java -cp "%HIVE_CLASSPATH%;%SPARK_CLASSPATH%;%HADOOP_CLASSPATH%" %JAVA_OPTIONS% org.apache.hive.beeline.BeeLine %*

您可以毫无问题地执行beeline throw 这个新脚本。

于 2016-10-27T12:19:40.073 回答