我正在嘗試通過將DataflowPipelineOptions中的setUpdate標誌設置爲true來更新DataFlow作業。我有一個函數用名稱檢查現有作業,如果作業不存在,我將setUpdate標誌設置爲false,否則爲true。這意味着第一次部署作業時,setUpdate標誌設置爲false,所有後續部署將標誌設置爲true。無法通過更新標誌更新Dataflow作業
options.setUpdate(jobExists(options));
管道代碼如下:
pipeline
.apply("Read", pubsubDownload)
.apply("Window", Window.into(FixedWindows.of(WINDOW_DURATION)))
.apply("Extract", ParDo.of(new Extract()))
.apply("Count", ApproximateUnique.perKey(0.06))
.apply("View As Map", View.asMap()); //<-- ****Fails here
注:我只是想測試更新標誌,以便沒有改變部署中的代碼的任何部分。只是想測試那個國旗設法用新的替換舊的工作。
但是這不起作用。我可以第一次成功部署這項工作。當我嘗試再次部署作業時,出現以下錯誤:
工作流程失敗。原因:(9a8ccc4f2e36c2d6):新作業與2016-07-29_08_07_42-9397818075052889951不兼容。原始作業尚未中止。,(9a8ccc4f2e36c371):階段視圖爲Map/StreamingViewAsMap/Combine.Globally/Combine.PerKey/GroupByKey已更改的方式與更新不兼容。
是View.asMap函數不可更新?根據文檔,SideInput是可更新的。作爲錯誤狀態,如果查看不可更新和SideInput需要查看,該文檔具有虛假信息。
請注意,這項工作沒有View.asMap管道步驟。
謝謝!
你能否詳細說明你在原有工作與新工作之間的管道變化? –
@BenChambers沒有變化。我想測試更新標誌,所以我部署了一次,並且第二次部署了,而沒有觸及任何代碼。我更新了原始問題以反映更新失敗的確切位置。 – Mayumi
我們正在調查。 – jkff