Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Scala中创建SparkSession时的java.lang.InterruptedException_Scala_Apache Spark - Fatal编程技术网

在Scala中创建SparkSession时的java.lang.InterruptedException

在Scala中创建SparkSession时的java.lang.InterruptedException,scala,apache-spark,Scala,Apache Spark,如果我复制这个要点: 然后发出sbt run命令,它在线路上失败 val spark=SparkSession.builder() .config(新的SparkConf().setMaster(“本地[*]”) .enableHiveSupport() .getOrCreate() 有误: Java.lang.InterruptedException 位于java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject

如果我复制这个要点:

然后发出
sbt run
命令,它在线路上失败

val spark=SparkSession.builder()
.config(新的SparkConf().setMaster(“本地[*]”)
.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"

该错误是因为您尚未停止创建的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.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait处的Java.lang.InterruptedException(AbstractQueuedSynchronizer.Java:2014)

你必须有以下消息了

ERROR-Utils:SparkListenerBus线程中的未捕获错误,正在停止SparkContext


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

thx@RameshMaharjan。我已经用这些信息更新了这个问题。我还是一个Scala/sbt新手,所以现在我不完全确定使用什么命令是正确的,尽管这是一个Scala应用程序
sbt run
。如果我注释掉这一行,而是运行一些简单的操作,比如
print(“hello world”)
,那么它会按预期运行。
spark submit
用于将spark应用程序(用java、scala或python编写)提交到spark集群。这不是我在这里要做的,我只是将spark用作一个库来创建spark会话,我相信这样做是有效的。它只是stacktrace的一部分,我看不出根本原因。@jamiet,我试图在我的回答中解释下面的原因:)它清楚地说明了错误的原因,我可能会质疑“清楚”这个词的用法:)