Я относительно новичок в Pyspark и в своем Python коде после создания SparkContext я забыл добавить s c .stop () в конец моего кода, и в результате спаркконтекст так и не был очищен.
Теперь, когда я выполняю свой код, он находит старый контекст и выдает сообщение «Возможно, SparkContext уже существует».
Если я смогу запустить код снова, я добавлю s c .stop () в конце но сейчас мне нужно найти способ очистить старый контекст вручную.
В приведенном ниже коде метод getorcreate должен повторно использовать существующий контекст, если он существует, но в моем случае он не работает.
Я уверен, что когда системы будут перезагружены на следующей неделе, это решит проблему, но мне нужно разрешение, чтобы обойти эту немедленную проблему, и на случай, если sparkcontext останется там, например, в случае сбоя приложения.
import os
import sys
os.environ["JAVA_HOME"] = "/usr/java/default"
os.environ["SPARK_HOME"] = "/opt/cloudera/parcels/SPARK2/lib/spark2/"
os.environ["PYLIB"] = os.environ["SPARK_HOME"] + "/python/lib"
os.environ["PYSPARK_PYTHON"] = "/opt/cloudera/parcels/citiconda3/bin/python"
sys.path.insert(0, os.environ["PYLIB"] +"/py4j-0.10.7-src.zip")
sys.path.insert(0, os.environ["PYLIB"] + "/pyspark.zip")
Конфигурация для приложения Spark.
from pyspark import SparkConf
from pyspark.sql import HiveContext, SparkSession
os.environ["JAVA_HOME"] = "/usr/java/default"
os.environ["SPARK_HOME"] = "/opt/cloudera/parcels/SPARK2/lib/spark2/"
os.environ["PYLIB"] = os.environ["SPARK_HOME"] + "/python/lib"
os.environ["PYSPARK_PYTHON"] = "/opt/cloudera/parcels/westconda3/bin/python"
sys.path.insert(0, os.environ["PYLIB"] +"/py4j-0.10.7-src.zip")
sys.path.insert(0, os.environ["PYLIB"] + "/pyspark.zip")
conf = SparkConf()
conf.setMaster('yarn-client')
conf.setAppName('Forecast')
Сбой этого оператора - getorcreate context
spark = SparkSession.builder.config(conf=conf).enableHiveSupport().getOrCreate()
sc = spark.sparkContext
hc = HiveContext(sc)