如何导入/检查在一个py文件中创建的sparkcontext到另一个?

时间:2017-01-06 04:42:37

标签: python apache-spark pyspark

我是新来的火花。目前我正在尝试使用Pyspark提取Facebook API数据。我正在调用的主文件中创建sparkcontext。我在文件夹中有多个.py文件,当我执行spark提交主程序时,所有这些文件都被执行。

当程序转到其他.py文件时,我想检查我创建的sparkcontext是否存在。如果是,我想使用sparkcontext来执行other.py文件。任何人都可以帮助我这样做。如果我错在哪里。请提出最好的建议。

示例:这不是我的整个代码只显示我的小代码问题

# Calling file name: main_file.py        
def fb_calling():
       import file2
       file2.fb_generaldata()

f __name__ == "__main__":
    conf = SparkConf()
    conf.setAppName('fb_sapp')
    conf.setMaster('yarn-client')
    sc = SparkContext(conf=conf)
    fb_calling()

# File:file2.py
def fb_generaldata():
    sc.parallelize('path')

我的问题是我想使用在main_file.py中创建的sparkcontext来在file2.py中使用 你能说出这是怎么可能的。如果我在错误的轨道上,你能指导我吗?我是全新的火花。 谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

您可以将sparkContex作为参数传递给file2.py中的函数,就像这个

一样
# File:file2.py
def fb_generaldata(sc):
    sc.parallelize('path')

# main_file.py 
import file2

if __name__ == "__main__":
    conf = SparkConf()
    conf.setAppName('fb_sapp')
    conf.setMaster('yarn-client')
    sc = SparkContext(conf=conf)
    file2.fb_generaldata(sc)

根据您的运行方式,您可能需要在导入之前将文件发送给您的工作人员,您可以使用sc.addPyFile("file2.py")或使用spark-submit命令中的py-files参数执行此操作。< / p>