Google cloud platform Apache Beam GroupByKey不';我好像什么也不输出

Google cloud platform Apache Beam GroupByKey不';我好像什么也不输出,google-cloud-platform,apache-beam,Google Cloud Platform,Apache Beam,我有一个运行在GoogleDataflow上的Beam管道,它从Pubsub获取输入,并在处理时间序列数据之前按键对它们进行分组。不知何故,当我运行管道时,代码似乎无法处理GroupByKey步骤,其余步骤无法运行。(请参见随附的屏幕截图,了解分组键步骤的控制台输出) Window Window=Window.into(FixedWindows.of(Duration.standardHours(1))) .triggering(重复.forever(pastEndOfWindow())) .允

我有一个运行在GoogleDataflow上的Beam管道,它从Pubsub获取输入,并在处理时间序列数据之前按键对它们进行分组。不知何故,当我运行管道时,代码似乎无法处理GroupByKey步骤,其余步骤无法运行。(请参见随附的屏幕截图,了解分组键步骤的控制台输出)

Window Window=Window.into(FixedWindows.of(Duration.standardHours(1)))
.triggering(重复.forever(pastEndOfWindow()))
.允许延迟(持续时间.标准秒(10))
.丢弃燃烧的汽油();
PCollection keyToDataList=data.apply(“添加事件时间戳”,带有timestamps.of(new EventTimestampFunction()))
.应用(“窗口化”,窗口)
.apply(“按键分组”,GroupByKey.create())
.apply(“按日期排序”,ParDo.of(new SortDataFn()));
奇怪的是,代码过去是可以工作的,但在测试下游修改的一些小部分时,GroupByKey不再工作了。最糟糕的是,恢复到以前的git版本也不起作用。我尝试清理构建,将以前的工作文件复制到一个新文件夹中,但都不起作用。我现在正在拔掉我的头发,所以如果有人对这个问题有一些见解,如果你能帮助我,我将不胜感激!提前谢谢


我想这可能完全取决于te窗口。如果水印没有超出任何窗口,它很可能是一个候选对象。GBK需要等待窗口在触发之前聚合所有数据。。。这有意义吗?但是我运行的一些测试已经进行了8-10个小时,很可能水印已经通过了。不管怎样,我过去运行的其他作业都可以工作,这似乎是某种构建问题,或者当作业被转移到数据流时,出现了一些问题。我认为最好的办法是为管道编写一些单元测试,特别是使用,这样你就可以确定它是否在你的代码中,或者你可以去其他地方看看。奇怪的是,我把原始文件放在Linux机器上运行,结果成功了。但是,在我的Windows机器上这样做,GroupByKey的步骤就被卡住了。这听起来像是某种本地构建过程问题吗?如何重置库/生成环境或查明问题的根源?我已经做了一个mvn清理包,所以我认为应该重新下载这些库。问这个问题是因为在其他时候,我尝试了另一种方法,Linux在GroupBykey步骤部署了一个卡住的管道。。。唉。。这令人沮丧(恐怕我帮不上忙……但听起来真的很烦人。你不能只用Linux本身吗?
Window<KV<String, Data>> window = Window.<KV<String, Data>>into(FixedWindows.of(Duration.standardHours(1)))
    .triggering(Repeatedly.forever(pastEndOfWindow()))
    .withAllowedLateness(Duration.standardSeconds(10))
    .discardingFiredPanes();

PCollection<KV<String, List<Data>>> keyToDataList = data.apply("Add Event Timestamp", WithTimestamps.of(new EventTimestampFunction()))
    .apply("Windowing", window)
    .apply("Group by Key", GroupByKey.create())
    .apply("Sort by date", ParDo.of(new SortDataFn()));