我正在运行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"
什么都不返回) . 我尝试了 export SPARK_HOME=/home/user/spark
,而不是将火花装配 jar 连接到 HIVE_HOME/lib
.
我直接得到以下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)
我认为错误是由缺少火花装配 jar 引起的 .
我怎么能 Build /我在哪里可以找到那些spark-assembly jar文件?
我怎么能解决上面的错误?
谢谢!
3 回答
首先,Spark不会从2.0.0构建
spark-assembly.jar
,而是将所有依赖关系jar构建到目录$SPARK_HOME/jars
此外,Hive不支持Spark的每个版本,实际上它具有强大的版本兼容性限制,可以在Spark上运行Hive . 取决于您使用的是哪个版本的Hive,您始终可以在Hive的
pom.xml
文件中找到相应的Spark版本 . 对于Hive 2.1.1
,spark version specified in pom.xml是:正如您已经知道的那样,您需要在没有蜂巢支持的情况下构建火花 . 我不知道为什么但Hive on Spark - Getting Started中的命令对我不起作用,最后我成功了以下命令:
我之前遇到的其他一些故障排除技巧(希望你不会见面):
由于未能找到slf4f或hadoop相关类,启动Spark Master失败,运行
export SPARK_DIST_CLASSPATH=$(hadoop classpath)
并再试一次无法加载snappy本机库,这是由于类路径中没有snappy依赖,或者hadoop classpath下的snappy lib不是Spark的正确版本 . 您可以下载正确版本的snappy 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
不会找到任何与火花相关的 jar
但是,我通过mac安装brew安装Hive 2.1.0 . 问题还在 .
看一下
Hive on Spark: Getting Started