我正在尝试通过gcloud命令行界面激活Dataflow Shuffle [DS]。
我正在使用以下命令:
gcloud dataflow jobs run ${JOB_NAME_STANDARD} \
--project=${PROJECT_ID} \
--region=us-east1 \
--service-account-email=${SERVICE_ACCOUNT} \
--gcs-location=${TEMPLATE_PATH}/template \
--staging-location=${PIPELINE_FOLDER}/staging \
--parameters "experiments=[shuffle_mode=\"service\"]"
作业开始。数据流用户界面反映了这一点:
但是,在解析值时显示错误的日志:
Failed to parse SDK pipeline options: json: cannot unmarshal string into Go struct
field sdkPipelineOptions.experiments of type []string
我在做什么错了?
此问题确实与现有问题有关:
How to activate Dataflow Shuffle service?
但是最初的问题是关于python API的,而我的问题是gcloud CLI。
[DS] https://cloud.google.com/dataflow/docs/guides/deploying-a-pipeline#cloud-dataflow-shuffle
P.S。更新
我也尝试过:
没有运气。
答案 0 :(得分:1)
(据我所知)目前无法为模板启用shuffle_service。
您有两个选择: a)不是从模板运行作业 b)创建一个已经启用shuffle_service的模板。
解组问题很可能是因为模板仅支持固定数量的参数,而模板不支持“ experiments”参数。
---- UPD ---- 我被问到如何在启用shuffle_service的情况下创建模板。
这是我采取的示例步骤。
按照WordCountTutorial创建具有管道定义的项目。
使用以下命令创建的模板:
mvn -Pdataflow-runner编译exec:java -Dexec.mainClass = org.apache.beam.examples.WindowedWordCount -Dexec.args =“-project = {project-name} --stagingLocation = gs:// {暂存位置} --inputFile = gs:// apache-beam-samples / shakespeare / * --output = gs:// {output-location} --runner = DataflowRunner --experiments = shuffle_mode = service --region = us-central1 --templateLocation = gs:// {resulting-template-location}“
注意--experiments = shuffle_mode =服务参数
从UI或通过命令调用模板:
云数据流作业运行{job-name} --project = {project-name} --region = us-central1 --gcs-location = gs:// {resulting-template-location}
< / li>