我有一组记录,为简单起见如下(逗号分隔):
A1, B1, C1
A1, B1, C1'
A1, B2, C2
当我通过Beam作为PCollection传递它时,我使用ParDo将每个映射到一个对象。现在我想将它们组合成
A1: {
B1: [C1, C1'],
B2: C2
}
对于键值对,我可以使用GroupByKey,但是如果结构是非常嵌套的,那么重复的字段可以在每个级别呢?是否有任何变换可以组合重复的字段?
答案 0 :(得分:0)
您可以天真地连续应用GroupByKey
转换。第一组B
,然后按A
分组。但是,这非常低效,因为在每个GroupByKey
步骤中,所有键值对都必须保留在内存中。
Combine.PerKey
变换类似于GroupByKey
,但它还允许您指定具有用于组合值的自定义逻辑的累加器类。这些值可以是任何类型,例如,重复字段或极其嵌套的对象。
参考:
1. Apache Beam Combine.PerKey