给出此代码块
def return_pid(_): yield os.getpid()
spark = SparkSession.builder.getOrCreate()
pids = set(spark.sparkContext.range(32).mapPartitions(return_pid).collect())
print(pids)
pids = set(spark.sparkContext.range(32).mapPartitions(return_pid).collect())
print(pids)
我期待相同的python进程ID将被打印两次。相反,正在打印完全不同的Python进程ID。
spark.python.worker.reuse
是真的但默认。但如果明确spark.python.worker.reuse=true
,这种意外行为仍然会发生。