【问题标题】:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/sql/Column线程“主”java.lang.NoClassDefFoundError 中的异常:org/apache/spark/sql/Column
【发布时间】:2021-03-10 20:00:32
【问题描述】:

我是 Scala 和 Intellij 的新手,一直在努力解决以下错误:

java.lang.NoClassDefFoundError: org/apache/spark/sql/Column

我使用依赖项构建了我的 scala/sbt 项目:

libraryDependencies += "org.apache.spark" % "spark-sql_2.11" % "2.2.0" % "provided"

我能够添加以下导入:

import org.apache.spark.sql.{Row, SparkSession, Column}

但是,RowSparkSession 看起来很正常,但 Column 似乎是灰色的。

我似乎无法弄清楚为什么Column 的工作方式不同。

任何帮助将不胜感激!谢谢!

【问题讨论】:

  • 如果它显示为灰色,则表示您的程序不需要导入。在 Intellij 中尝试 Code > Optimize Imports
  • 你能分享你的代码吗?
  • 谢谢你,塞巴斯蒂安,澄清。但是,我仍然不知道为什么会收到此错误,因为我的代码不需要它。
  • 如果删除 %provided 并刷新会怎样?

标签: scala intellij-idea sbt


【解决方案1】:

我在我的 maven 项目中也遇到了类似的错误,我发现这是由于 在我的 pom.xml 中的 <scope> 标记中提供值

<dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.11</artifactId>
            <version>${spark.version}</version>
            <scope>provided</scope>
        </dependency>

提供的这个不允许我的 spark-SQL 依赖得到解决,因此我得到了上面提到的错误,一旦我评论了提供的部分,spark_sql 依赖就解决了,这个错误也是如此......你会需要弄清楚为什么你的依赖没有在 sbt 中得到解决,因为这就是我的原因。

【讨论】:

    【解决方案2】:

    我也是 Scala 的新手。通过删除 provided 解决了相同的错误。但是我遇到了另一个错误,需要添加

    assemblyMergeStrategy in assembly := {
     case PathList("META-INF", xs @ _*) => MergeStrategy.discard
     case x => MergeStrategy.first
    }
    

    到 sbt 文件。

    【讨论】:

      猜你喜欢
      • 2017-01-30
      • 2018-08-09
      • 2017-11-22
      • 2021-07-22
      • 2017-03-24
      • 2016-04-24
      • 2019-09-09
      • 2020-08-01
      • 1970-01-01
      相关资源
      最近更新 更多