如何通过gcloud CLI激活Dataflow Shuffle服务

时间:2019-06-27 02:29:28

标签: google-cloud-dataflow

我正在尝试通过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\"]"

作业开始。数据流用户界面反映了这一点:

DataFlow UI

但是,在解析值时显示错误的日志:

  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。更新

我也尝试过:

enter image description here enter image description here

没有运气。

1 个答案:

答案 0 :(得分:1)

(据我所知)目前无法为模板启用shuffle_service。

您有两个选择: a)不是从模板运行作业 b)创建一个已经启用shuffle_service的模板。

解组问题很可能是因为模板仅支持固定数量的参数,而模板不支持“ experiments”参数。

---- UPD ---- 我被问到如何在启用shuffle_service的情况下创建模板。

这是我采取的示例步骤。

  1. 按照WordCountTutorial创建具有管道定义的项目。

  2. 使用以下命令创建的模板:

    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 =服务参数

  1. 从UI或通过命令调用模板:

    云数据流作业运行{job-name} --project = {project-name} --region = us-central1 --gcs-location = gs:// {resulting-template-location}

    < / li>