假设我们有2个PCollections:
PCollection 1:
[<ID_1, some_data>, <ID_2, some_data>, ... <ID_5, some_data>]
PCollection 2:
[<ID_2>, <ID_5>]
两个PCollections都是有界的,但可能很大(因此,最好不要使用侧面输入)。
假设我们要将PCollection1分成2个,这取决于ID_x是否存在于PCollection 2中,即一个PCollection将具有
[<ID_1, some_data>, <ID_3, some_data>, <ID_4, some_data>]
和另一个[<ID_2, some_data>, <ID_5, some_data>]
。如何实现呢?
似乎Partition
转换是可行的方法,但我不知道该怎么做。
但是,我正在使用Python。
答案 0 :(得分:1)
Partition
将允许您根据运行时应该计算的标准将一个PCollection
实际分成多个,因此从理论上讲,它可以用于此目的。但在您的情况下,条件是“ pcollection_of_ids中存在ID”。因此,您需要或多或少有效地执行此检查。
我不认为有一个确定的解决方案,这取决于您的设置和数据的细节。例如。输入PCollections
有多大?或者,如果您在pcollection1
中没有匹配的ID的情况下在pcollection_of_ids
中收到了一个元素,但是在您分割输入之后,匹配的ID出现了,该怎么办?或者,您可以将ID预加载到某些服务中以进行有效的键/值查找吗?还是在ID进入时将其保存到单独的并行管道中的此类服务中?