Mongodb &引用;SparkContext已被关闭”;在Scala中使用df.select(“Column Name”)时
我正在Scala上创建一个Spark会话,将MongoDB中的大量数据拉入数据帧。每当我试图只显示该数据帧的一列时,就会出现以下错误:Mongodb &引用;SparkContext已被关闭”;在Scala中使用df.select(“Column Name”)时,mongodb,scala,dataframe,apache-spark,Mongodb,Scala,Dataframe,Apache Spark,我正在Scala上创建一个Spark会话,将MongoDB中的大量数据拉入数据帧。每当我试图只显示该数据帧的一列时,就会出现以下错误: (run-main-0) java.lang.IllegalStateException: SparkContext has been shutdown 我曾尝试将数据大小减少到只有10行,但仍然会出现相同的错误。最终目标是对“Rev”列中的所有值求和,并作为变量返回,但首先需要解决这个问题 下面是我的代码片段,其中URI val sparkMongo = S
(run-main-0) java.lang.IllegalStateException: SparkContext has been shutdown
我曾尝试将数据大小减少到只有10行,但仍然会出现相同的错误。最终目标是对“Rev”列中的所有值求和,并作为变量返回,但首先需要解决这个问题
下面是我的代码片段,其中URI
val sparkMongo = SparkSession.builder() // Creates a Spark instance that connects to MongoDB
.appName("MongoSparkConnector")
.config("spark.executor.memory", "1g")
.config("spark.driver.memory", "8g")
.config("spark.master", "local")
.config("spark.mongodb.input.uri", URI)
.config("spark.mongodb.output.uri", URI)
.getOrCreate()
import sparkMongo.implicits._
val df = sparkMongo.read // Creates Dataframe for scalanahw from Mongo
.format("mongo")
.option("url", URI)
.option("collection", "collection_name")
.option("take",10)
.load()
val temp = df.select("Rev")
sparkMongo.stop()
没有select
功能(下面代码的倒数第二行),代码编译和运行正常。我尝试过缓存我的数据帧,将驱动程序和执行程序内存增加到20g,并删除sparkMongo.stop()
,但它产生了相同的错误。任何指导都将不胜感激
编辑已解决的问题
与许多编程错误一样,我犯了一个愚蠢的错误,在尝试使用
select
之前加入了sparkMongo.stop()
,因此出现了一个错误,指出SparkContext已被关闭。select
是一个延迟执行的转换;您将需要某种终端操作(收集
,计数
,等等)
由于您的“temp”变量更像是在代码运行过程中为自己提供一些反馈,因此我建议您执行以下操作:
df.select("Rev").show()
嗨,瑞安,谢谢你的意见。请您详细说明或提供一个可能的例子好吗?