【问题标题】:Per-partition GroupByKey in BeamBeam 中的每个分区 GroupByKey
【发布时间】:2019-10-30 22:30:16
【问题描述】:
Beam 的GroupByKey 按键对所有分区中的记录进行分组,并输出单个可迭代的每个键每个窗口。这“将s 关联数据放在一起into one location”
有没有一种方法可以在本地按键对记录进行分组,这样我仍然可以得到一个可迭代的 per-key-per-window 作为其输出,但只能通过分区中的本地记录而不是全局分组-所有位置的密钥?
【问题讨论】:
标签:
google-cloud-dataflow
apache-beam
【解决方案1】:
如果我正确理解您的问题,如果数据的一部分(分区)在同一台机器上处理然后可以在本地分组,您不想通过网络传输数据。
通常,Beam 不会向您提供代码将在何处以及如何运行的详细信息,因为它可能因运行程序/引擎/资源管理器而异。但是,如果您可以获取有关您的工作人员的一些 uniq 信息(例如主机名、ip 或 mac 地址),那么您可以将其用作您的密钥的一部分,并以此对所有相关数据进行分组。在这种情况下,这些数据分区很可能不会移动到其他机器上,因为所有需要的输入数据都已经位于同一台机器上并且可以在本地处理。不过,afaik,对此并没有 100% 的保证。