【发布时间】:2021-03-13 08:58:19
【问题描述】:
在我进行一些处理和按键分组后,我有一个如下所示的数据集。我现在需要对每一行数据做一些处理来得到下面的输出。我试过 flatmap 它真的很慢,因为“值”列表的长度可以任意长。我想我可以将每一行分成单独的 pcollections,并行处理,然后将它们拼合在一起。如何将每一行拆分为不同的 pcollection?如果这不可行,还有其他方法可以加快计算速度吗?
输入
key, value
1 [A, B, B, B]
2 [A, B, B, B]
3 [A, B, B, B]
4 [A, B, B, B]
5 [A, B, B, B]
输出:
key, value
1 (A, 0)
1 (B, 1)
1 (B, 2)
1 (B, 3)
2 (A, 0)
2 (B, 1)
2 (B, 2)
2 (B, 3)
...
【问题讨论】:
-
为什么不只迭代GBK结果中的值呢?许多 PCollection 对我来说没有意义(只有当它们包含不同类型的元素并且必须遵循下游处理的不同路径时),因为 PCollection by design 应该是并行处理的。
-
我确实尝试过。我编写了一个函数并使用 flatmap 将该函数应用于 pcollection,它真的很慢,有时会耗尽内存。 “价值”列表的长度可以任意长(数十万)。我希望将它分成多个 pcollections 将有助于加快速度。
标签: python apache-beam