【问题标题】:Hive on Spark: Missing <spark-assembly*.jar>Spark 上的 Hive:缺少 <spark-assembly*.jar>
【发布时间】:2017-04-12 14:55:44
【问题描述】:

我正在运行 Hive 2.1.1、Spark 2.1.0 和 Hadoop 2.7.3。

我尝试按照Hive on Spark: Getting Started 构建 Spark:

./dev/make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.7,parquet-provided"

但是,我在 spark 目录下找不到任何 spark-assembly jar 文件(find . -name "spark-assembly*.jar" 没有返回任何内容)。我没有将 spark-assembly jar 链接到 HIVE_HOME/lib,而是尝试了 export SPARK_HOME=/home/user/spark

我在直线中收到以下 Hive 错误:

0: jdbc:hive2://localhost:10000> set hive.execution.engine=spark;
0: jdbc:hive2://localhost:10000> insert into test (id, name) values (1, 'test1');
Error: Error running query: java.lang.NoClassDefFoundError: scala/collection/Iterable (state=,code=0)

我认为错误是由于缺少 spark-assembly jars 造成的。

我如何构建/在哪里可以找到那些 spark-assembly jar 文件?

如何解决上述错误?

谢谢!

【问题讨论】:

  • 你可以尝试sudo find / -name搜索整个系统
  • 我相信从 Spark 2.x 开始,spark-assembly.jar 就不需要了。
  • @mrsrinivas 那么我怎样才能将 spark 链接到 hive?你介意我把你的评论放在这个问题上吗?

标签: hadoop apache-spark hive


【解决方案1】:

首先,Spark不会从2.0.0构建spark-assembly.jar,而是将所有依赖jar构建到目录$SPARK_HOME/jars

此外,Hive 并不支持所有版本的 Spark,实际上在 Spark 上运行 Hive 有很强的版本兼容性限制。取决于您使用的 Hive 版本,您始终可以在 Hive 的pom.xml 文件中找到相应的 Spark 版本。对于Hive 2.1.1spark version specified in pom.xml 是:

&lt;spark.version&gt;1.6.0&lt;/spark.version&gt;

正如您已经知道,您需要在没有 Hive 支持的情况下构建 Spark。我不知道为什么,但是Hive on Spark - Getting Started 中的命令对我不起作用,最后我成功使用了以下命令:

mvn -Pyarn -Phadoop-2.6 -Dscala-2.11 -DskipTests clean package

以及我之前遇到的一些其他故障排除技巧(希望您不会遇到):

  • 由于找不到 slf4f 或 hadoop 相关类,启动 Spark Master 失败,运行 export SPARK_DIST_CLASSPATH=$(hadoop classpath) 并重试
  • 加载 snappy 原生库失败,原因是类路径中没有 snappy 依赖,或者 hadoop 类路径下的 snappy 库不是 Spark 的正确版本。您可以下载正确版本的 snappy lib 并将其放在$SPARK_HOME/lib/ 下,然后运行export SPARK_DIST_CLASSPATH=$SPARK_HOME/lib/*:$(hadoop classpath) 再试一次。

希望这对您有所帮助,一切顺利。

【讨论】:

    【解决方案2】:

    是的,他们没有从 spark 2.0.0 开始构建 spark-assembly.jar 文件。 jars目录下有独立的小jar文件。

    https://issues.apache.org/jira/browse/SPARK-11157

    https://issues.apache.org/jira/secure/attachment/12767129/no-assemblies.pdf

    【讨论】:

    • 我使用 Hive 2.1.0,虽然没有汇编 jar 文件。他说的问题还是出现了。我猜是 Spark 的版本
    【解决方案3】:

    找到 . -iname '*spark*'

    不会找到任何与 spark 相关的 jar

    但是,我在 mac 上通过 brew install 使用 Hive 2.1.0。问题依旧。

    看看

    Hive on Spark: Getting Started

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-13
      • 1970-01-01
      • 2023-03-09
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-10
      相关资源
      最近更新 更多