遇到这种错误提示,通常是由于在spark shell或者spark-submit运行应用程序时,之前有一个SparkContext被创建并开启,而在重新创建新的SparkContext时,就会出现底层文件被更新的错误提示。
下面给出一种解决方法,可以在程序中判断SparkContext是否存在,如果存在则不重新创建,避免报错:
from pyspark import SparkContext, SparkConf
import sys
# 判断SparkContext是否存在
try:
sc = SparkContext.getOrCreate()
except:
# 创建新的SparkContext
conf = SparkConf().setAppName("MyApp")
sc = SparkContext(conf=conf)
# your code here
# 停止SparkContext
sc.stop()
在以上代码示例中,首先尝试获取已有的SparkContext,如果获取失败则说明不存在,就创建一个新的SparkContext,然后在程序代码结束时停止SparkContext,以确保程序正常退出。