man*_*521 5 google-cloud-platform pyspark google-cloud-dataproc airflow
我在 GCP Dataproc 上有一个 pyspark 作业可以在气流上触发,如下所示:
config = help.loadJSON("batch/config_file")
MY_PYSPARK_JOB = {
"reference": {"project_id": "my_project_id"},
"placement": {"cluster_name": "my_cluster_name"},
"pyspark_job": {
"main_python_file_uri": "gs://file/loc/my_spark_file.py"]
"properties": config["spark_properties"]
"args": <TO_BE_ADDED>
},
}
Run Code Online (Sandbox Code Playgroud)
我需要为此 pyspark 作业提供命令行参数,如下所示 [这就是我从命令行运行 pyspark 作业的方式]:
spark-submit gs://file/loc/my_spark_file.py --arg1 val1 --arg2 val2
Run Code Online (Sandbox Code Playgroud)
我使用"configparser"为我的 pyspark 作业提供参数。因此,arg1 是键,val1 是上面的 Spark-submit 命令中的值。
如何在上面定义的“MY_PYSPARK_JOB”中定义“args”参数[相当于我的命令行参数]?
我终于成功解决了这个难题。如果我们使用 ConfigParser,则必须按如下方式指定密钥 [无论参数是作为命令传递还是通过气流传递]:
--arg1
Run Code Online (Sandbox Code Playgroud)
在气流中,配置作为 Sequence[str] 传递(如下面的@Betjens所述),每个参数定义如下:
arg1=val1
Run Code Online (Sandbox Code Playgroud)
因此,根据我的要求,命令行参数定义如下:
"args": ["--arg1=val1",
"--arg2=val2"]
Run Code Online (Sandbox Code Playgroud)
PS:谢谢@Betjens 的所有建议。
| 归档时间: |
|
| 查看次数: |
1465 次 |
| 最近记录: |