apache-beam - 在 Apache Beam 中将嵌套的重复字段组合成数组
问题描述
我有一组记录,为简单起见如下(逗号分隔):
A1, B1, C1
A1, B1, C1'
A1, B2, C2
当我将它作为 PCollection 通过 Beam 时,我使用 ParDo 将每个映射到一个对象中。现在我想将它们组合成
A1: {
B1: [C1, C1'],
B2: C2
}
对于键值对,我可以使用 GroupByKey,但是如果结构非常嵌套,重复字段可以在每个级别出现怎么办?是否有任何转换来组合重复字段?
解决方案
您可以天真地GroupByKey
连续应用转换。先分组B
,再分组A
。但是,这是非常低效的,因为所有键值对在每个GroupByKey
步骤中都必须保留在内存中。
Combine.PerKey
转换类似于,GroupByKey
但它还允许您指定具有自定义逻辑的累加器类以组合值。这些值可以是任何类型,例如重复字段或极度嵌套的对象。
参考:
1. Apache Beam Combine.PerKey
推荐阅读
- kubernetes - Kubernetes 服务已配置但连接被拒绝
- reactjs - 受保护的路由在身份验证后未呈现受保护的组件
- javascript - 使用 html 和 javascript 显示 google 搜索结果链接
- json - Swift 组合版本的 decodeIfPresent?
- node.js - 得到一个 CastError,ObjectId 的值失败
- java - 在 Java SE 上运行单元测试时使用带有 Weld 的 CDI 不满足的依赖关系
- python - 如果在 x 时间内未收到代码,则需要重复此操作
- python - 忽略迁移中的 Django 模型字段
- python - 我怎样才能制作多人游戏变量,所以当有人添加一个时,每个人的屏幕都会显示变量(+1)?
- c# - Xamarin.Forms 服务返回列表
加上状态码