Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.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
Mongodb &引用;SparkContext已被关闭”;在Scala中使用df.select(“Column Name”)时_Mongodb_Scala_Dataframe_Apache Spark - Fatal编程技术网

Mongodb &引用;SparkContext已被关闭”;在Scala中使用df.select(“Column Name”)时

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

我正在Scala上创建一个Spark会话,将MongoDB中的大量数据拉入数据帧。每当我试图只显示该数据帧的一列时,就会出现以下错误:

(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()

嗨,瑞安,谢谢你的意见。请您详细说明或提供一个可能的例子好吗?