将嵌套的重复字段组合到Apache Beam

时间:2018-05-10 14:53:21

标签: apache-beam

我有一组记录,为简单起见如下(逗号分隔):

A1, B1, C1 
A1, B1, C1'
A1, B2, C2

当我通过Beam作为PCollection传递它时,我使用ParDo将每个映射到一个对象。现在我想将它们组合成

A1: {
 B1: [C1, C1'],
 B2: C2
}

对于键值对,我可以使用GroupByKey,但是如果结构是非常嵌套的,那么重复的字段可以在每个级别呢?是否有任何变换可以组合重复的字段?

1 个答案:

答案 0 :(得分:0)

您可以天真地连续应用GroupByKey转换。第一组B,然后按A分组。但是,这非常低效,因为在每个GroupByKey步骤中,所有键值对都必须保留在内存中。

Combine.PerKey变换类似于GroupByKey,但它还允许您指定具有用于组合值的自定义逻辑的累加器类。这些值可以是任何类型,例如,重复字段或极其嵌套的对象。

参考:
1. Apache Beam Combine.PerKey

相关问题