我正在使用bash脚本构建一个Spark应用程序,并且我在build.sbt文件中只有一个spark-sql和核心依赖项。因此,每次我调用一些rdd方法或将数据转换为case类以创建dataset时,我都会收到以下错误:
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
发布于 2019-06-10 00:53:07
然而,我不确定到底是什么问题,我已经重新创建了项目,并将源代码移到了那里。错误消失了
https://stackoverflow.com/questions/56507108
复制相似问题