Python 重新启动Spark上下文
我正在运行一个Python 重新启动Spark上下文,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我正在运行一个Jupyter-spark设置,我想用不同的输入参数对集群进行基准测试。为了确保enivorment保持不变,我正在尝试重置(重新启动)SparkContext,下面是一些伪代码: import os import shutil import pyspark temp_result_parquet = os.path.normpath('/home/spark_tmp_parquet') i = 0 while i < max_i: i += 1 if
Jupyter
-spark设置,我想用不同的输入参数对集群进行基准测试。为了确保enivorment保持不变,我正在尝试重置(重新启动)SparkContext,下面是一些伪代码:
import os
import shutil
import pyspark
temp_result_parquet = os.path.normpath('/home/spark_tmp_parquet')
i = 0
while i < max_i:
i += 1
if os.path.exists(temp_result_parquet):
shutil.rmtree(temp_result_parquet) # I know I could simply overwrite the parquet
My_DF = do_something(i)
My_DF.write.parquet(temp_result_parquet)
sc.stop()
time.sleep(10)
sc = pyspark.SparkContext(master='spark://ip:here', appName='PySparkShell')
我尝试在不重新启动SparkContext的情况下运行代码,但这会导致内存问题。因此,为了在每次迭代之前一笔勾销,我正在尝试这样做。奇怪的结果是,parquet
认为SparkContext
失败了 长话短说,Spark(包括PySpark)不是为在一个应用程序中处理多个上下文而设计的。如果您对这个故事的JVM方面感兴趣,我建议您阅读SPARK-2243(已解决为无法修复)
PySpark中有许多设计决策反映了这一点,包括但不限于单例Py4J网关。实际上,一个应用程序中不能有多个SparkContext。SparkSession不仅绑定到SparkContext,而且还引入了它自己的问题,例如如果使用本地(独立)配置单元元存储,则处理该配置单元元存储。此外,还有一些函数使用SparkSession.builder.getor在内部创建,具体取决于您现在看到的行为。一个显著的例子是UDF注册。如果存在多个SQL上下文(例如RDD.toDF),其他函数可能会表现出意外行为
在我个人看来,多重语境不仅不受支持,而且违反了单一责任原则。您的业务逻辑不应该关心所有的设置、清理和配置细节
长话短说,Spark(包括PySpark)并非设计用于在单个应用程序中处理多个上下文。如果您对这个故事的JVM方面感兴趣,我建议您阅读SPARK-2243(已解决为无法修复)
PySpark中有许多设计决策反映了这一点,包括但不限于单例Py4J网关。实际上,一个应用程序中不能有多个SparkContext。SparkSession不仅绑定到SparkContext,而且还引入了它自己的问题,例如如果使用本地(独立)配置单元元存储,则处理该配置单元元存储。此外,还有一些函数使用SparkSession.builder.getor在内部创建,具体取决于您现在看到的行为。一个显著的例子是UDF注册。如果存在多个SQL上下文(例如RDD.toDF),其他函数可能会表现出意外行为
在我个人看来,多重语境不仅不受支持,而且违反了单一责任原则。您的业务逻辑不应该关心所有的设置、清理和配置细节
能否提供应用程序的完整日志
纱线日志-applicationId application\u XXX
我没有使用纱线启动群集。能否提供应用程序的完整日志纱线日志-applicationId application\u XXX
我没有使用纱线启动群集。
Py4JJavaError: An error occurred while calling o1876.parquet.
: org.apache.spark.SparkException: Job aborted.
[...]
Caused by: java.lang.IllegalStateException: SparkContext has been shutdown
at org.apache.spark.SparkContext.runJob(SparkContext.scala:2014)
at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$write$1.apply$mcV$sp(FileFormatWriter.scala:188)