【问题标题】:java.lang.InterruptedException when creating SparkSession in Scala在 Scala 中创建 SparkSession 时出现 java.lang.InterruptedException
【发布时间】:2018-05-24 19:08:49
【问题描述】:

如果我克隆这个要点:https://gist.github.com/jamiekt/cea2dab3ea8de91489b31045b302e011

然后发出sbt run它失败就行了

val spark = SparkSession.builder()
                        .config(new SparkConf().setMaster("local[*]"))
                        .enableHiveSupport()
                        .getOrCreate()

有错误:

Java.lang.InterruptedException 在 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2014)

不知道为什么会发生这种情况。有人有建议吗?

Scala 版本是 2.11.12(参见要点中的 build.sbt
Spark 版本是 2.3.0(再次参见 build.sbt
Java版

$ java -version
java version "1.8.0_161"

【问题讨论】:

  • 谢谢@RameshMaharjan。我已经用该信息更新了问题。
  • 我仍然是 Scala/sbt 新手,所以现在我不完全确定要使用的正确命令是什么,尽管考虑到这是一个 Scala 应用程序sbt run 似乎合适。如果我注释掉那一行,而是运行像print("hello world") 这样简单的东西,那么它会按预期运行。
  • spark-submit 用于将 spark 应用程序(用 java、scala 或 python 编写)提交到 spark 集群。这不是我在这里想要做的,我只是使用 spark 作为库来创建 spark 会话,我相信这样做是有效的。
  • 这只是堆栈跟踪的一部分,我看不到根本原因。
  • @jamiet,我试图在我的回答中解释以下原因:)

标签: scala apache-spark


【解决方案1】:

该错误是因为您尚未停止创建的 sparkSession 实例,并且该实例已从内存中删除而没有在 sbt run 完成后立即关闭,即在您的代码成功完成之后。

所以你只需要

  spark.stop()

在创建实例的范围的末尾

object Application extends App{
  import DataFrameExtensions_._
  val spark = SparkSession.builder().config(new SparkConf().setMaster("local[*]")).enableHiveSupport().getOrCreate()
  //import spark.implicits._
  //val df = Seq((8, "bat"),(64, "mouse"),(-27, "horse")).toDF("number", "word")
  //val groupBy = Seq("number","word")
  //val asAt = LocalDate.now()
  //val joinedDf = Seq(df.featuresGroup1(_,_), df.featuresGroup2(_,_)).map(_(groupBy, asAt)).joinDataFramesOnColumns(groupBy)
  //joinedDf.show

  spark.stop()
}

就在之前

Java.lang.InterruptedException at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2014)

你也必须有以下消息

ERROR Utils: uncaught error in thread SparkListenerBus, stopping SparkContext

这提供了错误原因的线索。

【讨论】:

  • 清楚地说明了错误的原因我可能会对“清楚地”这个词的使用提出异议:) :)
猜你喜欢
  • 2020-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 2022-01-23
  • 1970-01-01
  • 2017-07-17
  • 2017-08-13
相关资源
最近更新 更多