使用ParDo还是使用Transform进行过滤?

时间:2016-06-02 18:59:34

标签: google-cloud-dataflow

我正在开发一个从BigQuery PCollection<TableRow>获取PCollection的管道,并根据单元格值对其进行过滤。

使用this example中的ParDo过滤它是否更好?或者我应该使用Class Filter<T>吗?

基本上我希望能够根据personType进行过滤。例如:

if(personType == 'customer') {
  then c.output(outputTableRow);
 }

有什么区别,我如何处理这个错误,我该怎么办呢?

1 个答案:

答案 0 :(得分:1)

他们几乎一样。所有Filter转换均使用ParDo实现DoFn,就像您提到的那样(请参阅Filter.java)。

Filter转换是一种方便的过滤简写。如果它有效,它可能更简洁。唯一的主要区别是Filter转换只能 根据输入元素进行过滤。例如,如果您想使用包含应该传递的元素列表的side-input,那么您需要使用ParDo。如果你只是过滤“这个字段是否等于'客户'”,那么Filter可能就好了。