我正在用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
答案 0 :(得分:0)
不确定确切的问题是什么,但是,我已经重新创建了项目并将源代码移到了那里。错误消失了