我试图为同一密钥输出SUM和COUNT。
例如。给定具有数百万个飞机延误事件的.csv。
我想使用Apache Beam(Java)求和每个平面的延迟时间,并计算每个平面有多少延迟。

每行都有plane_id, delay_duration, date,依此类推。

我正在尝试创建两个PCollections,并希望在输出之前进行合并。

PCollection<KV<String, Integer>> sum =  eventInfo.apply(MapElements.into(TypeDescriptors.kvs(TypeDescriptors.strings(),TypeDescriptors.integers())).via((Event.EventInfo gInfo) -> KV.of(gInfo.getKey('plane_id'), gInfo.getDuration()))).apply(Sum.integersPerKey());

PCollection<KV<String, Long>> count =  eventInfo.apply(MapElements.into(TypeDescriptors.kvs(TypeDescriptors.strings(), TypeDescriptors.integers())).via((Event.EventInfo gInfo) -> KV.of(gInfo.getKey('plane_id'), gInfo.getDuration()))).apply(Count.perKey());


这两个PCollections可以按预期工作,但我无法弄清楚如何在3列中输出(合并?)它。总和计数。

最佳答案

您将需要CoGBK,这将帮助您确定总和并为同一密钥计数。

07-28 00:59