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

bjo*_*ndv 7 google-cloud-dataproc

我试图使用python文件的zip的GCS uri提交作业(通过--py-files参数),并将python文件名作为PY_FILE参数值.这似乎不起作用.我是否需要为PY_FILE值提供一些相对路径?PY_FILE也包含在zip中.例如in

gcloud beta dataproc jobs submit pyspark  --cluster clustername --py-files gcsuriofzip PY_FILE    
Run Code Online (Sandbox Code Playgroud)

PY_FILE的价值应该是多少?

Jam*_*mes 7

这是一个很好的问题.要回答这个问题,我将使用PySpark wordcount示例.

在这种情况下,我创建了两个文件,一个叫做test.py我想要执行的文件,另一个叫做wordcount.py.zip包含修改 wordcount.py文件的zip ,用于模仿我想要调用的模块.

我的test.py文件看起来像这样:

import wordcount
import sys
if __name__ == "__main__":
    wordcount.wctest(sys.argv[1])
Run Code Online (Sandbox Code Playgroud)

我修改了wordcount.py文件以消除main方法并添加命名方法:

...
from pyspark import SparkContext

...
def wctest(path):
    sc = SparkContext(appName="PythonWordCount")
...
Run Code Online (Sandbox Code Playgroud)

我可以使用以下命令在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
Run Code Online (Sandbox Code Playgroud)

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