代码之家  ›  专栏  ›  技术社区  ›  bjorndv

使用“--py-files”参数将PySpark作业提交到集群

  •  10
  • bjorndv  · 技术社区  · 11 年前

    我试图提交一个作业,其中包含要使用的python文件的zip的GCS uri(通过--py-files参数)和作为py_file参数值的python文件名。 这似乎行不通。我是否需要为PY_FILE值提供一些相对路径?PY_FILE也包含在zip中。 e、 g.英寸

    gcloud beta dataproc jobs submit pyspark  --cluster clustername --py-files gcsuriofzip PY_FILE    
    

    PY_FILE的值应该是多少?

    1 回复  |  直到 11 年前
        1
  •  8
  •   James    11 年前

    这是个好问题。为了回答这个问题,我将使用 PySpark wordcount example .

    在本例中,我创建了两个文件,一个名为 test.py 这是我要执行的文件,另一个名为 wordcount.py.zip 这是一个包含 被改进的 wordcount.py 文件设计为模拟我要调用的模块。

    我的 测试.py 文件如下所示:

    import wordcount
    import sys
    if __name__ == "__main__":
        wordcount.wctest(sys.argv[1])
    

    我修改了 字数.py 文件以消除主方法并添加命名方法:

    ...
    from pyspark import SparkContext
    
    ...
    def wctest(path):
        sc = SparkContext(appName="PythonWordCount")
    ...
    

    我可以把整个事情都打开 Dataproc 通过使用以下命令 gcloud 命令:

    gcloud beta dataproc jobs submit pyspark  --cluster <cluster-name> \
    --py-files gs://<bucket>/wordcount.py.zip gs://<bucket>/test.py \ 
    gs://<bucket>/input/input.txt
    

    在此示例中 <bucket> 是我的存储桶的名称(或路径) <cluster-name> 是Dataproc集群的名称。