【发布时间】:2018-08-23 02:36:43
【问题描述】:
在 NiFi 数据流中,如果我想根据特定字段的值将单个流文件分成两组,就性能而言,以以下方式使用 QueryRecord 或 PartitionRecord 是否更快?
查询记录:
SELECT * FROM FLOWFILE WHERE WEIGHT < 1000;
分区记录
- 在
UpdateRecord在RecordPath 模式下使用/weight的值填充一个新的“字符串”字段greater_or_less - 在
UpdateRecord在字面值 模式下将greater_or_less更新为${field.value:toNumber():lt(1000)} - 在
PartitionRecord中对greater_or_less上的流文件进行分区
在 PartitionRecord 方法中,我将有两种模式,一种是原始数据格式,另一种是除了原始数据格式之外还有greater_or_less 字段。我们将从原始模式中的第 1 步开始,在新模式中从第 1 步输出,然后在原始模式中输出第 3 步。第三步的输出应该是两个flowfile,一个相当于QueryRecord方法的输出。
总之,虽然QueryRecord 实现起来稍微简单一些,但我对 NiFi 的后端机制以及这些处理器的开销如何比较一无所知,所以我不确定哪种方法是最佳。我的直觉告诉我QueryRecord 很昂贵,但我不确定它与PartitionRecord 方法的类型切换和记录读写相比如何。
【问题讨论】:
标签: java performance etl apache-nifi