apache-spark - 如何将 spark 参数传递给 dataproc 工作流模板?
问题描述
这是我所拥有的:
gcloud dataproc workflow-templates create $TEMPLATE_ID --region $REGION
gcloud beta dataproc workflow-templates set-managed-cluster $TEMPLATE_ID --region $REGION --cluster-name dailyhourlygtp --image-version 1.5
--master-machine-type=n1-standard-8 --worker-machine-type=n1-standard-16 --num-workers=10 --master-boot-disk-size=500
--worker-boot-disk-size=500 --zone=europe-west1-b
export STEP_ID=step_pyspark1
gcloud dataproc workflow-templates add-job pyspark \
gs://$BUCKET_NAME/my_pyscript.py \
--step-id $STEP_ID \
--workflow-template $TEMPLATE_ID \
--region $REGION \
--jar=gs://spark-lib/bigquery/spark-bigquery-latest_2.12.jar
--initialization-actions gs://spark-lib/bigquery/spark-bigquery-latest_2.12.jar
--properties spark.jars.packages=gs://spark-lib/bigquery/spark-bigquery-latest_2.12.jar
gcloud dataproc workflow-templates instantiate $TEMPLATE_ID --region=$REGION
所以这里的问题是如何将以下 spark 参数传递给我的my_pyscript.py
:
--master yarn --deploy-mode cluster --conf "spark.sql.shuffle.partitions=900"
--conf "spark.sql.autoBroadcastJoinThreshold=10485760" --conf "spark.executor.memoryOverhead=8192"
--conf "spark.dynamicAllocation.enabled=true" --conf "spark.shuffle.service.enabled=true"
--executor-cores 5 --executor-memory 15g --driver-memory 16g
解决方案
这在文档gcloud dataproc workflow-templates add-job pyspark中有描述:
--properties=[PROPERTY=VALUE,…]
用于配置 PySpark 的键值对列表。有关可用属性的列表,请参阅: https ://spark.apache.org/docs/latest/configuration.html#available-properties 。
因此,您可以在没有模板的情况下将 pyspark 作业提交到 dataproc 集群。提交作业的 spark 属性通过参数作为键值数组传递--properties
。
如果您的 python 作业需要 args,则在位置参数的右侧指定它们--
并用空格分隔。
对于您的示例,可以这样做:
gcloud dataproc workflow-templates add-job pyspark \
gs://$BUCKET_NAME/my_pyscript.py \
--step-id $STEP_ID \
--workflow-template $TEMPLATE_ID \
--region $REGION \
--properties="spark.submit.deployMode"="cluster",\
"park.sql.shuffle.partitions"="900",\
"spark.sql.autoBroadcastJoinThreshold"="10485760",\
"spark.executor.memoryOverhead"="8192",\
"spark.dynamicAllocation.enabled"="true",\
"spark.shuffle.service.enabled"="true",\
"spark.executor.memory"="15g",\
"spark.driver.memory"="16g",\
"spark.executor.cores"="5" \
-- arg1 arg2 # for named args: -- -arg1 arg1 -arg2 arg2
推荐阅读
- android - 如何在android中将背景圆线主题添加到ChipCloudConfig
- c# - 在 Microsoft.Owin.Testing.TestServer 的 HttpClient 上更改超时没有效果
- php - PHP Thread 类不是用 PHP7 创建的
- ios - Objective-C 如何将 NSArray 转换为 Byte 数组?
- sql - SQL:将数值数据类型转换为数值时出现算术溢出错误
- vba - 使用 vba 使用凭据访问 Web 服务
- java - Yolov3 没有检测到任何东西,但 Yolov2 工作正常
- angular - 我如何获得 Angular(TypeScript) 选择框的选定文本
- android - 弹出窗口有问题
- python - Python Decimal 模块给出与计算器不同的数字