【发布时间】:2020-10-01 18:10:00
【问题描述】:
我正在使用 Dataflow 和 Apache Beam 处理数据集并将结果存储在包含两列的无头 csv 文件中,如下所示:
A1,a
A2,a
A3,b
A4,a
A5,c
...
我想根据以下两个条件过滤掉某些条目:
1- 在第二列中,如果某个值的出现次数小于N,则删除所有此类行。例如,如果 N=10 和 c 只出现 7 次,那么我希望过滤掉所有这些行。
2- 在第二列中,如果某个值的出现次数超过M,则只保留M许多这样的行并过滤掉其余的行。例如,如果M=1000 和a 出现了 1200 次,那么我希望过滤掉 200 个此类条目,并将其他 1000 个案例存储在 csv 文件中。
换句话说,我想确保第二列的所有元素出现的次数多于N 且少于M。
我的问题是这是否可以通过在 Beam 中使用一些过滤器来实现?还是应该在创建并保存 csv 文件后作为后处理步骤完成?
【问题讨论】:
-
如果 N=10 且 M=100 而你,例如,“c”出现:a) 99, b) 100 和 c) 101 次。每个案例预计有多少个输出元素?
-
例如,如果 c 为 99 或 100,则应包括所有情况。当 c 为 101 时,应排除一种情况,而应将其他 100 种情况包含在 csv 文件中(无论它们如何选择)。
标签: google-cloud-dataflow apache-beam dataflow