如何通过键合并两个PCollection KV <>?

时间:2019-09-04 17:16:45

标签: java apache-beam

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

每行都有plane_id, delay_duration, date,等等。

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

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列中输出(合并?)它。总和计数。

1 个答案:

答案 0 :(得分:0)

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