我在hive上尝试了以下命令:
set hive.execution.engine=spark;
但在亚马逊EMR上设置执行引擎后运行任何查询时出错:
Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/Iterable
at org.apache.hadoop.hive.ql.parse.spark.GenSparkProcContext.<init>(GenSparkProcContext.java:163)
at org.apache.hadoop.hive.ql.parse.spark.SparkCompiler.generateTaskTree(SparkCompiler.java:328)
at ---------------
Caused by: java.lang.ClassNotFoundException: scala.collection.Iterable
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at ---------------
我尝试将jar从spark复制到hive路径并将conf文件激活到hive conf, 仍然有错误,任何修复?
答案 0 :(得分:1)
我尝试将jar从spark复制到hive路径并将conf文件激活到hive conf
您不需要进行任何类型的手动配置。你手动安装了任何组件吗?我刚刚创建了一个带有Hive,Spark和Hadoop的EMR集群,并且该命令开箱即用。
创建群集时,您需要单击“转到高级选项”并手动检查组件。 “快速选项”中的Spark堆栈不包含Hive。
答案 1 :(得分:1)
要在hive脚本中添加与spark相关的jar,以便在spark执行引擎中运行hive查询。
请在 / usr / lib / hive / bin / hive 脚本中添加以下内容
for f in ${SPARK_HOME}/jars/*.jar; do
CLASSPATH=${CLASSPATH}:$f;
done
这一行之后
HIVE_LIB=${HIVE_HOME}/lib
希望这有帮助。
由于 拉维