【问题标题】:Combine nested repeated fields into array in Apache Beam在 Apache Beam 中将嵌套的重复字段组合成数组
【发布时间】:2018-05-10 14:53:21
【问题描述】:

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

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

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

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

对于键值对,我可以使用 GroupByKey,但是如果结构非常嵌套,重复字段可以在每个级别出现怎么办?是否有任何转换来组合重复字段?

【问题讨论】:

    标签: apache-beam


    【解决方案1】:

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

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

    参考:
    1. Apache Beam Combine.PerKey

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-05
      相关资源
      最近更新 更多