簡體   English   中英

Spark上的蜂巢:失蹤<spark-assembly*.jar>

[英]Hive on Spark: Missing <spark-assembly*.jar>

我正在運行Hive 2.1.1,Spark 2.1.0和Hadoop 2.7.3。

我嘗試按照Spark上的Hive構建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 jar文件?

我怎么能解決上面的錯誤?

謝謝!

首先,Spark不會從2.0.0構建spark-assembly.jar ,而是將所有依賴項jar構建到目錄$SPARK_HOME/jars

此外,Hive不支持Spark的每個版本,實際上它具有強大的版本兼容性限制,可以在Spark上運行Hive。 取決於您使用的是哪個版本的Hive,您總是可以在Hive的pom.xml文件中找到相應的Spark版本。 對於Hive 2.1.1pom.xml中指定spark版本是:

<spark.version>1.6.0</spark.version>

正如您已經知道的那樣,您需要在沒有蜂巢支持的情況下構建火花。 我不知道為什么但是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 classpath下的snappy lib不是Spark的正確版本。 您可以下載正確版本的$SPARK_HOME/lib/ lib並將其放在$SPARK_HOME/lib/ ,然后運行export SPARK_DIST_CLASSPATH=$SPARK_HOME/lib/*:$(hadoop classpath)試。

希望這可能會有所幫助,一切順利。

是的,他們沒有從spark 2.0.0開始構建spark-assembly.jar文件。 jar目錄中提供了獨立的小jar文件。

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

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

找 。 -iname'* spark *'

不會找到任何與火花相關的罐子

但是,我通過mac安裝brew安裝Hive 2.1.0。 問題還在。

看一下

Spark上的Hive:入門

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM