猿问

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

我试图输出同一个键的 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());

这两个 PCollection 按预期工作,但我不知道如何在 3 列中输出它(合并它?)总和| 数数。


DIEA
浏览 91回答 1
1回答

杨__羊羊

您将需要CoGBK,它将帮助您共同定位总和并计算相同的密钥。
随时随地看视频慕课网APP

相关分类

Java
我要回答