我试图通过在DataFlow中将setUpdate标志设置为true来更新DataflowPipelineOptions作业。我有一个函数,它用名称检查现有作业,如果作业不在那里,我将setUpdate标志设置为false,否则为true。这意味着第一次部署作业时,setUpdate标志设置为false,所有后续部署都会将标志设置为true。
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):新作业与不兼容。最初的作业没有被中止。,(9a8ccc4f2e36c371):以与Map/StreamingViewAsMap/Combine.Globally/Combine.PerKey/GroupByKey不兼容的方式更改舞台视图为。
View.asMap函数不可更新吗?根据文档,SideInput是可更新的。由于错误状态,如果视图不可更新且SideInput需要视图,则文档中包含错误信息。
请注意,这不需要View.asMap管道步骤。
发布于 2016-08-01 11:10:00
你需要检查更新现有管道
防止兼容性中断:
例如,您可以在StackDriver日志中搜索“不具有稳定的唯一名称”。也许有些帕多是匿名的。
https://stackoverflow.com/questions/38670194
复制相似问题