在Scala中创建SparkSession时出现java.lang.InterruptedException

时间:2018-05-24 08:36:12

标签: scala apache-spark

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

然后发出sbt run它就失败了

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

有错误:

  

Java.lang.InterruptedException           at 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"

1 个答案:

答案 0 :(得分:4)

该错误是因为您尚未停止创建的 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

  

提供了错误原因的线索。