如果我克隆这个要点: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"
答案 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
提供了错误原因的线索。