Spark sql错误

时间:2017-02-19 13:27:58

标签: apache-spark apache-spark-sql

我尝试使用spark-sql但是我遇到了以下错误:

  

错误:加载类文件时检测到缺失或无效的依赖项   ' package.class&#39 ;.无法访问包中的术语注释   org.apache.spark,因为它(或其依赖项)缺失。校验   缺少或冲突的依赖项的构建定义。 (重办   使用-Ylog-classpath查看有问题的类路径。)完整   如果" package.class'那么重建可能有所帮助。是针对一个编译的   org.apache.spark的不兼容版本。警告:上课   未找到org.apache.spark.annotation.InterfaceStability - 继续   有一个存根。错误:检测到缺少或无效的依赖项   加载类文件' SparkSession.class'。无法访问期限   包org.apache.spark中的注释,因为它(或它的   缺少依赖项。检查您的构建定义是否缺少或   冲突的依赖关系。 (重新使用-Ylog-classpath查看   有问题的类路径。)如果完全重建可能会有所帮助   ' SparkSession.class'是针对不兼容的版本编译的   org.apache.spark。

我的配置:

  • Scala 2.11.8
  • Spark-core_2.11-2.1.0
  • Spark-sql_2.11-2.1.0

  • 注意:我使用SparkSession。

2 个答案:

答案 0 :(得分:3)

在深入了解错误信息后,我知道如何解决这类错误。 例如:

错误 - Symbol 'term org.apache.spark.annotation' is missing... A full rebuild may help if 'SparkSession.class' was compiled against an incompatible version of org.apache.spark

打开SparkSession.class,搜索“import org.apache.spark.annotation。”,您会找到import org.apache.spark.annotation.{DeveloperApi, Experimental, InterfaceStability}。确定classpath中缺少这些类。你需要找到结束这些类的工件。

开放https://search.maven.org并使用c:"DeveloperApi" AND g:"org.apache.spark"进行搜索,您会发现丢失的工件{@ 1}}为@Prakash回答。

在我的情况下,只需在pom.xml中添加依赖项spark-tagsspark-catalyst

但是,为什么maven不能自动解决传递依赖?这很奇怪?

spark-tags

如果我使用上述依赖性,则只有spark-core_2.11-2.2.0.jar属于maven依赖;如果我将版本更改为2.1.0或2.3.0,则所有传递依赖项都将存在。

答案 1 :(得分:2)

您需要包含以下工件以避免依赖性问题。

  • 火花unsafe_2.11-2.1.1
  • 火花tags_2.11-2.1.1