从 REST API 更新 Dataflow 作业

Posted

技术标签:

【中文标题】从 REST API 更新 Dataflow 作业【英文标题】:Updating a Dataflow job from the rest API 【发布时间】:2017-11-27 17:38:22 【问题描述】:

我正在尝试使用 REST API 以编程方式更新云 DataFlow 作业,如 here 所述

我有一个 PubSub to BigQuery 作业,我的最终目标是替换 BigQuery 输出表。

我尝试使用 replacedByJobId 字段将当前作业更新为新作业,但总是收到此错误:

“错误”: “代码”:400, “消息”:“(b7fd8310f1b85ccf):无法修改工作流程;无效的修改值:0”, “状态”:“INVALID_ARGUMENT”

请求正文:

"id": "jobid", "projectId": "projectId", "replacedByJobId = "newJobId",

是否有其他方法可以替换正在运行的作业的参数 (OutputTable) 或用新的类似作业替换正在运行的作业?

【问题讨论】:

【参考方案1】:

为了更新作业,您还需要提供兼容的替换作业。请注意,目前仅支持使用 Java SDK 进行更新。

您可以在以下位置找到有关使用 Java SDK 进行更新的文档:Updating an Existing Pipeline: Launching Your Replacement Job。

【讨论】:

啊,我害怕这个。所以我想要做的事情是不可能从 REST API 做的。谢谢!【参考方案2】:
java -jar pipeline/build/libs/pipeline-service-1.0.jar \
        --project=my-project \
        --zone=us-central1-f \
        --streaming=true \
        --stagingLocation=gs://my-bucket/tmp/dataflow/staging/ \
        --runner=DataflowPipelineRunner \
        --numWorkers=5 \
        --workerMachineType=n1-standard-2 \
        --jobName=ingresspipeline \
        --update

【讨论】:

通常最好在代码旁边为您的答案提供一些解释。因为它是我不相信这与问题有任何关系

以上是关于从 REST API 更新 Dataflow 作业的主要内容,如果未能解决你的问题,请参考以下文章

从 Dataflow 作业连接到 Cloud SQL

如何从 Python SDK 中的 Dataflow 作业连接到 CloudSQL?

我可以将 Dataflow 作业配置为单线程吗?

从 Dataflow python 作业写入 bigquery 中的分区表

Python Cloud Dataflow 中无法更新工作状态异常

从 PubSub 导出到 BigQuery - Dataflow 没有任何反应