Spark SQL 错误

mha*_*ham 2 apache-spark apache-spark-sql

我尝试使用 Spark-sql 但出现以下错误:

错误:加载类文件“package.class”时检测到缺少或无效的依赖项。无法访问包 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 版本进行编译的,则完全重建可能会有所帮助。

我的配置:

  • 斯卡拉 2.11.8
  • Spark-core_2.11-2.1.0
  • Spark-sql_2.11-2.1.0

  • 注意:我使用 SparkSession。

Ayl*_*ake 7

深入研究错误消息后,我知道如何解决此类错误。例如:

错误 -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}。可以肯定的是,类路径中缺少这些类。您需要找到结束这些类的工件。

因此,打开https://search.maven.org并使用 进行搜索c:"DeveloperApi" AND g:"org.apache.spark",您会发现丢失的工件spark-tags正如 @Prakash 所回答的那样。

在我的情况下,只需添加依赖项spark-catalyst即可spark-tags在 pom.xml 中工作。


但奇怪的是,为什么 Maven 不在这里自动解析传递依赖关系呢?

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-core_2.11</artifactId>
  <version>2.2.0</version>
  <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

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