我的pyspark应用程序运行map / reduce的多个连续迭代。
每个映射阶段的设置时间都很长(将数据从磁盘加载到GPU),因此我使用sc.mapPartitions()
仅进行一次设置。
此外,我将数据实例保存在Python的全局堆栈中,这样就可以访问数据,而无需在下一个映射阶段再次进行设置。
该方法有时有效,有时spark决定销毁Python worker实例。 此外,在每次map / reduce迭代之间,我将一些数据保存到HDFS。 这使得spark重新利用工作程序进行保存操作,并因此破坏了Python实例。
是否有一种方法可以强制pyspark在应用程序的整个生命周期内(当然不包括失败的尝试)使执行程序中的Python实例保持活动状态?