亚马逊EMR火花上的蜂巢

时间:2018-03-02 16:41:15

标签: apache-spark hive amazon-emr

我在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, 仍然有错误,任何修复?

2 个答案:

答案 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

希望这有帮助。

由于 拉维