本頁說明如何使用平行取代作業等功能,解決升級 Dataflow 串流管道時發生的問題。
平行取代工作
如果執行平行取代作業時發生錯誤,請按照下列指引升級管道。
缺少必要選項 parallel_replace_job_min_parallel_pipelines_duration
嘗試執行平行取代作業時,作業遭到拒絕,並顯示下列錯誤:
The parallel replace job requires you to set the parallel_replace_job_min_parallel_pipelines_duration field. Set the field and try your request again.
如果已設定 parallel_replace_job_name 或 parallel_replace_job_id,但未設定 parallel_replace_job_min_parallel_pipelines_duration,就會發生這個問題。
如要解決這個問題,請一併設定 parallel_replace_job_min_parallel_pipelines_duration 選項和 parallel_replace_job_name 或 parallel_replace_job_id 選項。
缺少必要選項 parallel_replace_job_name 或 parallel_replace_job_id
嘗試執行平行取代作業時,作業遭到拒絕,並顯示下列錯誤:
The parallel replace job requires you to set either the parallel_replace_job_id field or the parallel_replace_job_name field. Set one of these fields, then try your request again.
如果已設定 parallel_replace_job_min_parallel_pipelines_duration,但未設定 parallel_replace_job_name 或 parallel_replace_job_id,就會發生這個問題。
如要解決這個問題,請一併設定 parallel_replace_job_name 或 parallel_replace_job_id 選項和 parallel_replace_job_min_parallel_pipelines_duration。
選項 parallel_replace_job_min_parallel_pipelines_duration 的時間長度值無效
嘗試執行平行取代作業時,作業遭到拒絕,並顯示下列錯誤:
An invalid duration string VALUE is set for `parallel_replace_job_min_parallel_pipelines_duration`. Set a valid duration string, such as 10s, 1m, or 1h. but not longer than 31 days.
發生這個問題的原因是提供的時間長度值無效。
如要解決這個問題,請以 <value><unit> 格式設定有效的時間長度字串,例如 10s、1m 或 1h。時間長度必須介於零到 31 天之間。
只有 Streaming Engine 支援平行取代工作
嘗試執行平行取代作業時,作業會遭到拒絕,並顯示下列錯誤:
Parallel replace job is only supported for Streaming Engine. To enable Streaming Engine follow the instructions at https://cloud.google.com/dataflow/docs/streaming-engine#use
發生這個問題的原因是新工作未啟用 Streaming Engine。
如要解決這個問題,請啟用串流引擎,然後重新執行作業。
找不到平行取代作業 ID
嘗試執行平行取代作業時,作業會遭到拒絕,並顯示下列錯誤:
The parallel replace job id JOB_ID was not found.
如果設定的工作 ID 無效,或是原始工作已從系統中清除,就會發生這個問題。
如要解決這個問題,請確認 parallel_replace_job_id 選項使用有效的執行中工作 ID。如果原始工作已終止,請移除平行工作更新選項,並建立新的正常工作。
找不到平行取代工作名稱
嘗試執行平行取代作業時,作業遭到拒絕,並顯示下列錯誤:
The parallel replace job name JOB_NAME was not found.
如果設定的工作名稱無效,或原始工作已從系統中清除,就會發生這個問題。
如要解決這個問題,請確認 parallel_replace_job_name 選項使用有效的執行中作業名稱。如果原始工作已終止,請移除平行工作更新選項,並建立一般新工作。
將平行取代作業點指派給非現有作業
嘗試執行平行取代作業時,作業遭到拒絕,並顯示下列錯誤:
The parallel replace job JOB_ID is not in a active state.
這是因為要取代的工作並非有效工作。
如要解決這個問題,請確認 parallel_replace_job_name 或 parallel_replace_job_id 指向有效的執行中串流工作。如果舊工作已終止,請移除平行工作更新選項,並建立一般新工作。
平行取代作業指向批次工作
嘗試執行平行取代作業時,作業會遭到拒絕,並顯示下列錯誤:
The parallel replace job must be a streaming job.
發生這個問題的原因是,要取代的工作並非串流工作。
如要解決這個問題,請確認 parallel_replace_job_name 或 parallel_replace_job_id 指向正在執行的串流工作,而非批次工作。
平行取代作業選項指向不同的工作
嘗試執行平行取代作業時,作業遭到拒絕,並顯示下列錯誤:
The parallel replace job id JOB_ID must point to a job with name JOB_NAME.
發生這個問題的原因是 parallel_replace_job_name 和 parallel_replace_job_id 選項指向不同的工作。
如要解決這個問題,請確認這兩個選項都指向同一個正在執行的串流工作 (如果兩者都使用)。或者,只使用其中一個選項,也就是 parallel_replace_job_name 或 parallel_replace_job_id。
啟用「在排空逾時時取消」時,缺少最長停止時間
嘗試執行並行取代作業時,作業遭到拒絕,並顯示下列錯誤訊息:
The parallel_replace_job_cancel_on_drain_timeout service option requires you to set the parallel_replace_job_max_stop_duration service option. Set the parallel_replace_job_max_stop_duration field and try your request again.
發生這個問題的原因是 parallel_replace_job_cancel_on_drain_timeout 選項設為 true,但 parallel_replace_job_max_stop_duration 選項未設定。
如要解決這個問題,請將 parallel_replace_job_max_stop_duration 選項設為有效時間長度,或移除 parallel_replace_job_cancel_on_drain_timeout。
前一個工作結束後,替代工作太快開始
如果您嘗試使用相同的工作名稱執行平行取代工作,系統會拒絕該工作並顯示下列錯誤:
The new parallel replace job must start after <var>min_duration</var> from the start of the previous job <var>old_job_id</var>. The current gap has the duration <var>gap_between_job</var>.
如果您使用相同的工作名稱更新工作 (選項 1),且新的替代工作在先前工作啟動後兩分鐘內啟動,就會發生這個問題。Dataflow 會強制執行兩分鐘的間隔下限,避免因重複的用戶端程式庫重試或過時的 RPC 而發生重複的平行更新。
如要解決這個問題,請等待前一個工作開始至少兩分鐘後,再啟動更新。