Scala sparkSession在线程中引发异常;“主要”;java.lang.NoClassDefFoundError:com/google/common/collect/Maps

Scala sparkSession在线程中引发异常;“主要”;java.lang.NoClassDefFoundError:com/google/common/collect/Maps,scala,apache-spark,Scala,Apache Spark,我试图用spark编写简单的scala程序,它有以下内容 src/main/scala/simpleap.scala: import org.apache.spark.sql.SparkSession import org.apache.spark.util.random object SimpleApp { def main(args: Array[String]) { val logFile = "<Some Valid Text File Path>" // S

我试图用spark编写简单的scala程序,它有以下内容

src/main/scala/simpleap.scala

import org.apache.spark.sql.SparkSession
import org.apache.spark.util.random

object SimpleApp {

  def main(args: Array[String]) {
    val logFile = "<Some Valid Text File Path>" // Should be some file on your system
    val spark = SparkSession.builder.appName("Simple Application").master("local").getOrCreate()
    val logData = spark.read.textFile(logFile).cache()
    val numAs = logData.filter(line => line.contains("a")).count()
    val numBs = logData.filter(line => line.contains("b")).count()
    println(s"Lines with a: $numAs, Lines with b: $numBs")
    spark.stop()
  }
}
但当我运行该程序时,会得到以下异常堆栈跟踪:

Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
20/03/21 03:23:07 INFO SparkContext: Running Spark version 2.4.5
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/Maps
    at org.apache.hadoop.metrics2.lib.MetricsRegistry.<init>(MetricsRegistry.java:42)
    at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.<init>(MetricsSystemImpl.java:93)
    at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.<init>(MetricsSystemImpl.java:140)
    at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.<init>(DefaultMetricsSystem.java:38)
    at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.<clinit>(DefaultMetricsSystem.java:36)
    at org.apache.hadoop.security.UserGroupInformation$UgiMetrics.create(UserGroupInformation.java:120)
    at org.apache.hadoop.security.UserGroupInformation.<clinit>(UserGroupInformation.java:236)
    at org.apache.spark.util.Utils$.$anonfun$getCurrentUserName$1(Utils.scala:2422)
    at scala.Option.getOrElse(Option.scala:189)
    at org.apache.spark.util.Utils$.getCurrentUserName(Utils.scala:2422)
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:293)
    at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2520)
    at org.apache.spark.sql.SparkSession$Builder.$anonfun$getOrCreate$5(SparkSession.scala:935)
    at scala.Option.getOrElse(Option.scala:189)
    at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:926)
    at SimpleApp$.main(SimpleApp.scala:9)
    at SimpleApp.main(SimpleApp.scala)
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.Maps
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 17 more
使用Spark的默认log4j配置文件:org/apache/Spark/log4j-defaults.properties
20/03/21 03:23:07信息SparkContext:运行Spark版本2.4.5
线程“main”java.lang.NoClassDefFoundError中出现异常:com/google/common/collect/Maps
位于org.apache.hadoop.metrics2.lib.MetricsRegistry(MetricsRegistry.java:42)
在org.apache.hadoop.metrics2.impl.MetricSystemImpl.(metricSystemImpl.java:93)
在org.apache.hadoop.metrics2.impl.MetricSystemImpl.(metricSystemImpl.java:140)
位于org.apache.hadoop.metrics2.lib.DefaultMetricsSystem。(DefaultMetricsSystem.java:38)
位于org.apache.hadoop.metrics2.lib.DefaultMetricsSystem。(DefaultMetricsSystem.java:36)
位于org.apache.hadoop.security.UserGroupInformation$UgiMetrics.create(UserGroupInformation.java:120)
位于org.apache.hadoop.security.UserGroupInformation。(UserGroupInformation.java:236)
位于org.apache.spark.util.Utils$.$anonfun$getCurrentUserName$1(Utils.scala:2422)
位于scala.Option.getOrElse(Option.scala:189)
位于org.apache.spark.util.Utils$.getCurrentUserName(Utils.scala:2422)
位于org.apache.spark.SparkContext(SparkContext.scala:293)
位于org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2520)
在org.apache.spark.sql.SparkSession$Builder.$anonfun$getOrCreate$5(SparkSession.scala:935)
位于scala.Option.getOrElse(Option.scala:189)
位于org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:926)
位于SimpleApp$.main(SimpleApp.scala:9)
在SimpleApp.main(SimpleApp.scala)上
原因:java.lang.ClassNotFoundException:com.google.common.collect.Maps
位于java.net.URLClassLoader.findClass(URLClassLoader.java:382)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 还有17个
我尝试在调试模式下运行,在尝试创建SparkSession对象时,似乎会引发异常。我错过了什么?
我从brew安装了spark,它可以从终端工作。

我找到了一个解决方案。要在IDE中运行这个,我需要添加一些额外的依赖项。我在
build.sbt

libraryDependencies += "com.google.guava" % "guava" % "28.2-jre"
libraryDependencies += "com.fasterxml.jackson.core" % "jackson-core" % "2.10.0"
libraryDependencies += "org.apache.hadoop" % "hadoop-client" % "2.7.2"
libraryDependencies += "com.google.guava" % "guava" % "28.2-jre"
libraryDependencies += "com.fasterxml.jackson.core" % "jackson-core" % "2.10.0"
libraryDependencies += "org.apache.hadoop" % "hadoop-client" % "2.7.2"