【发布时间】:2018-01-16 15:20:50
【问题描述】:
我正在使用 Google DataFlow Java SDK 2.2.0。用例如下:
PCollection pEmployees:员工及对应部门名称。最多可包含 1000 万个元素。
PCollection pDepartments:部门名称和每个部门要发布的元素数量。将包含数百个元素。
任务:根据 pDepartments 中所有部门的部门编号从 pEmployees 中收集元素。这将是一个大集合(最多几十万个元素或几 GB)。
我们不能在此处使用 Top 转换,因为它会在 pEmployee 上一次工作一个,而我们有多个部门,而且在 PCollection 中也有。我们可以为 pEmployees 中的每个元素分配一个行号,将其与 pDepartments 连接,并从 pDepartments 中过滤 row_number > target number 的记录。这将需要一个全球排名。
问题:我们如何将排名/行号分配给 pcollection 中的元素?
【问题讨论】:
-
我是否理解正确,您想从每个部门中选择不同数量的员工?在一个部门内,选择应该是任意的,还是例如“部门内薪酬最高的前 N 名员工”?
-
是的,每个部门需要招聘的员工人数不同。目前,该用例不需要在部门内进行有序选择,但如果有这样就很好了。
标签: google-cloud-dataflow apache-beam