我尝试使用Spark-SQL,但我有以下错误:
错误:加载类文件时检测到的丢失或无效依赖关系 'Package.Class'。无法访问包装中的术语注释 org.apache.spark,因为它(或其依赖关系)丢失。查看 您的构建定义是缺失或冲突的依赖性。(重新运行 使用
-Ylog-classpath
查看有问题的类路径。) 如果"包裹"与一个 org.apache.spark的不兼容版本。警告:上课 org.apache.spark.annotation.interfactation找不到 - 继续 用存根。错误:检测到丢失或无效的依赖性 加载类文件" SparkSession.Class"。无法访问术语 package 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。
挖掘错误消息后,我知道如何解决此类错误。例如:
错误-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
,搜索"导入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回答。
在我的情况下,只需在pom.xml工作中添加依赖项 spark-catalyst
和 spark-tags
。
,但是很奇怪,为什么Maven不自动解析此处的传递依赖性?
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.2.0</version>
<scope>provided</scope>
</dependency>
如果我使用上述偏差,则只有spark-core_2.11-2.2.0.jar处于maven依赖项中;虽然我将版本更改为2.1.0或2.3.0,但所有及物依赖性都将在那里。
您需要包括以下工件以避免依赖性问题。
- spark-unsafe_2.11-2.1.1
- spark-tags_2.11-2.1.1