2017-02-21 62 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)并重试。

希望这可能是有益的,一切顺利给你。