2017-02-21 84 views
2

我正在運行Hive 2.1.1,Spark 2.1.0和Hadoop 2.7.3。Hive on Spark:Missing <spark-assembly * .jar>

我試圖建立星火繼Hive on Spark: Getting Started

./dev/make-distribution.sh --name 「hadoop2-沒有蜂巢」 --tgz 「-Pyarn,Hadoop的提供, hadoop-2.7,parquet-provided「

但是,我在spark目錄下找不到任何spark-assembly jar文件(find . -name "spark-assembly*.jar"不返回任何內容)。我試過export SPARK_HOME=/home/user/spark,而不是將火花組裝罐連接到HIVE_HOME/lib

我得到直線以下蜂巢錯誤:

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文件?

我該如何解決上述錯誤?

謝謝!

+0

你可以嘗試使用'sudo find/-name'來搜索整個系統 –

+0

我相信** Spark 2.x **以後不需要'spark-assembly.jar'。 – mrsrinivas

+0

@mrsrinivas那麼我怎麼能把火花鏈接到蜂巢?你介意我是否將你的評論置於這個問題之中? –

回答

3

首先,星火不會修建從2.0.0 spark-assembly.jar,但構建所有的依賴罐子目錄$SPARK_HOME/jars

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

<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的相關類,運行export SPARK_DIST_CLASSPATH=$(hadoop classpath),然後再試一次
  • 無法加載活潑的本地庫,這是導致有一個在classpath中沒有活潑的依賴,或hadoop classpath下的快速lib不是正確的版本f或Spark。您可以下載snappy lib的正確版本並將其放在$SPARK_HOME/lib/下,然後運行export SPARK_DIST_CLASSPATH=$SPARK_HOME/lib/*:$(hadoop classpath)並重試。

希望這可能是有益的,一切順利給你。