该错误通常是由于使用了ParDo将输入数据分发到不同节点进行计算时,但没有明确定义输出的键值,导致每个节点都在尝试将结果输出到同一个位置,从而导致冲突。解决方法是在ParDo中添加.withOutputTags进行输出标签定义,确保不同节点的结果可以正确输出到不同位置。示例代码如下:
PCollection input = ...;
PCollectionTuple output =
input.apply(ParDo.of(new MyDoFn())
.withOutputTags(mainOutput, TupleTagList.of(sideOutuut)));
PCollection mainOutput = output.get(mainOutput);
PCollection sideOutput = output.get(sideOutput);