在PySpark中使用多处理时出现错误以及sparkSession

时间:2018-10-24 14:06:35

标签: python apache-spark pyspark python-multiprocessing

我的代码如下:

def processFiles(prcFile , spark:SparkSession):
    print(prcFile)
    app_id = spark.sparkContext.getConf().get('spark.app.id')
    app_name = spark.sparkContext.getConf().get('spark.app.name')
    print(app_id)
    print(app_name)
def main(configPath,args):
    config.read(configPath)
    spark: SparkSession = pyspark.sql.SparkSession.builder.appName("multiprocessing").enableHiveSupport().getOrCreate()    
    mprc = multiprocessing.Pool(3)
    lst=glob.glob(config.get('DIT_setup_config', 'prcDetails')+'prc_PrcId_[0-9].json')
    mprc.map(processFiles,zip(lst, repeat(spark.newSession())))

现在,我想传递一个新的Spark会话(spark.newSession())并相应地处理数据,但是出现一个错误消息:

  

异常:您似乎正在尝试引用   来自广播变量,操作或转换的SparkContext。   SparkContext只能在驱动程序上使用,不能在其运行的代码中使用   对工人。有关更多信息,请参阅SPARK-5063。

任何帮助都是非常重要的

0 个答案:

没有答案