【问题标题】:Passing parameters into dataproc pyspark job将参数传递到 dataproc pyspark 作业中
【发布时间】:2018-05-12 10:21:59
【问题描述】:

如何将参数传递到在 dataproc pyspark 作业提交中调用的 python 脚本中?这是我一直在使用的 cmd:

 gcloud dataproc jobs submit pyspark --cluster my-dataproc \ 
 file:///usr/test-pyspark.py \
 --properties=^:^p1="7day":p2="2017-10-01"

这是返回的输出:

 Job [vvvvvvv-vvvv-vvvv-vvvv-0vvvvvv] submitted. Waiting for job output...
 Warning: Ignoring non-spark config property: p2=2017-10-01 
 Warning: Ignoring non-spark config property: p1=7day 
 Found script=/usr/test-pyspark.py 
 Traceback (most recent call last):   
   File "/usr/test-pyspark.py", line 52, in <module>
     print(sys.argv[1]) 
 IndexError: list index out of range`

显然无法识别我尝试传入的 2 个参数。我也尝试过:

me@my-dataproc-m:~$  gcloud dataproc jobs submit pyspark --cluster=my-dataproc test-pyspark.py 7day 2017-11-01

但返回的是:

ERROR: (gcloud.dataproc.jobs.submit.pyspark) unrecognized arguments:
  7day
  2017-11-01

我用来通过 hive 作业传递参数的模式不适用于 pyspark。

任何帮助表示赞赏!

谢谢, 梅丽莎

【问题讨论】:

    标签: google-cloud-dataproc


    【解决方案1】:

    第二种形式很接近,使用“--”将作业的参数与 gcloud 的参数分开:

    $ gcloud dataproc jobs submit pyspark --cluster=my-dataproc \
        test-pyspark.py -- 7day 2017-11-01
    

    【讨论】:

    • 是的,只是注意到我没有仔细阅读帮助文件。非常抱歉,非常感谢。
    • 我可以将多个参数作为gcloud dataproc jobs submit pyspark --cluster =My-cluster test-pyspark.py -- name=abc salary=1000 传递,其中namesalary 是我的命令行参数。请帮忙。
    • 嗨@Regressor - '--' 之后的任何内容都会传递给您的工作,无需 Dataproc 解释;您可以包含零到多个参数,它们将提供给您在集群上的作业。
    猜你喜欢
    • 2018-05-31
    • 1970-01-01
    • 2022-10-17
    • 2021-05-14
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多