我在管道中执行GroupByKey,键是字符串,值是字典。我想将它们分组并对它们进行处理。如果我删除GroupByKey,我可以进入下一步,但不能使用它。
(parseout_interim | beam.Map(lambda row: (row['prefix'] + row['report_id'], row))
# | beam.GroupByKey()
| beam.ParDo(ParseSegmentsDoFn()).with_outputs(ParseSegmentsDoFn.OUTPUT_TAG_TRADELINE,
main = 'parseout'))
如果我评论GroupByKey,数据到达下一步。
我完全错过了什么吗?
此外,在旁注 - 建议不要在ParDo内部启动管道吗?还是完全没问题?如果没问题,我会离开而不必使用groupbykey
正如您在评论中暗示的那样,这必须是Streaming管道。
考虑流式传输管道不断接收事件。如果要对该管道中的事件进行分组,系统需要知道在对事件进行分组时应等待多长时间才能进入事件。那有意义吗?
因此,您需要为管道设置窗口和触发策略,否则它将永远等待,以对流中的所有元素进行分组。