NoClassDefFoundError:Spark应用中的Scala / Product $ class

时间:2019-06-08 14:04:37

标签: scala apache-spark sbt

我正在用bash脚本构建一个Spark应用程序,并且build.sbt文件中只有一个spark-sql和core依赖项。因此,每次我调用一些rdd方法或将数据转换为case类以进行数据集创建时,都会出现此错误:

Caused by: java.lang.NoClassDefFoundError: scala/Product$class

我怀疑这是一个依赖性错误。那么我应该如何更改我的依赖关系以解决此问题?

依赖项列表:

import sbt._

object Dependencies {
  lazy val scalaCsv = "com.github.tototoshi" %% "scala-csv" % "1.3.5"
  lazy val sparkSql = "org.apache.spark" %% "spark-sql" % "2.3.3"
  lazy val sparkCore = "org.apache.spark" %% "spark-core" % "2.3.3"
}

build.sbt文件:

import Dependencies._
lazy val root = (project in file(".")).
  settings(
    inThisBuild(List(
      scalaVersion := "2.11.12",
      version      := "test"
    )),
    name := "project",
    libraryDependencies ++= Seq(scalaCsv, sparkSql, sparkCore),
    mainClass in (Compile, run) := Some("testproject.spark.Main")
  )

我以spark 2.3.3作为spark主目录启动spark应用,如下所示:

#!/bin/sh
$SPARK_HOME/bin/spark-submit \
  --class "testproject.spark.Main " \
  --master local[*] \
  target/scala-2.11/test.jar

1 个答案:

答案 0 :(得分:0)

不确定确切的问题是什么,但是,我已经重新创建了项目并将源代码移到了那里。错误消失了