用 ParDo 还是用 Transform 过滤?
Filter with ParDo or with Transform?
我正在开发一个从 BigQuery PCollection<TableRow>
获取 PCollection 并根据单元格值对其进行过滤的管道。
像this example or should I be using the Class Filter<T>
那样用ParDo过滤更好吗?
基本上我希望能够根据 personType 进行过滤。例如:
if(personType == 'customer') {
then c.output(outputTableRow);
}
有什么区别,我是如何处理这个错误的,我应该尝试什么?
它们几乎相同。所有 Filter
转换都是使用 ParDo
和 DoFn
实现的,就像您提到的(参见 Filter.java)。
Filter
变换的存在是为了方便过滤。如果有效,它可能更简洁。唯一的主要区别是 Filter
转换可以 仅 基于输入元素的过滤。例如,如果您想使用包含应传递的元素列表的侧输入,则需要使用 ParDo
。如果您只是过滤 "does this field equal 'customer'",那么 Filter
可能没问题。
我正在开发一个从 BigQuery PCollection<TableRow>
获取 PCollection 并根据单元格值对其进行过滤的管道。
像this example or should I be using the Class Filter<T>
那样用ParDo过滤更好吗?
基本上我希望能够根据 personType 进行过滤。例如:
if(personType == 'customer') {
then c.output(outputTableRow);
}
有什么区别,我是如何处理这个错误的,我应该尝试什么?
它们几乎相同。所有 Filter
转换都是使用 ParDo
和 DoFn
实现的,就像您提到的(参见 Filter.java)。
Filter
变换的存在是为了方便过滤。如果有效,它可能更简洁。唯一的主要区别是 Filter
转换可以 仅 基于输入元素的过滤。例如,如果您想使用包含应传递的元素列表的侧输入,则需要使用 ParDo
。如果您只是过滤 "does this field equal 'customer'",那么 Filter
可能没问题。