DeduplicateRecord 2025.5.31.15¶
捆绑包¶
org.apache.nifi | nifi-standard-nar
描述¶
该处理器对记录集中的单个记录进行去重处理。它可以使用内存中的哈希集或布隆过滤器,按文件进行操作。配置分布式映射缓存时,它可跨多文件对记录进行去重处理。
输入要求¶
REQUIRED
支持敏感的动态属性¶
false
属性¶
属性 |
描述 |
---|---|
bloom-filter-certainty |
使用 BloomFilter 类型时所期望的误报概率。例如,使用值 0.05 可以保证结果为误报的概率为 5%。该值设置得越接近 1,结果越精确,但代价是存储空间利用率越高。 |
cache-identifier |
一个可选的表达式语言字段,用于替换记录的计算缓存键。该字段还有一个可用属性:${record.hash.value},它包含从动态属性(如果已设置)或记录字段派生的缓存键。 |
deduplication-strategy |
用于检测和路由重复记录的策略。单 FlowFile 范围内的重复检测在内存中进行,而跨多个 FlowFiles 的检测则需使用分布式映射缓存。 |
distributed-map-cache |
重复数据删除策略设置为“multiple files”时需要使用此属性。映射缓存将自动检查每条记录的缓存键是否存在,如果不存在,则进行设置。 |
filter-capacity-hint |
估计需要处理的唯一记录总数。这个数字越准确,BloomFilter 上的假阴性结果就越少。 |
filter-type |
该筛选器用于根据匹配 RecordPath 条件确定以前是否曾看过某条记录。如果选择了哈希集,则将使用 Java HashSet 对象对所有遇到的记录进行去重处理。如果选择了“Bloom Filter”选项,则将使用布隆过滤器。“Bloom Filter”选项的内存消耗较少,但有可能出现误报。 |
include-zero-record-flowfiles |
如果发送到重复或非重复关系的 FlowFile 中不包含任何记录,则此属性中的 |
put-cache-identifier |
对于每条记录,检查分布式映射缓存中是否存在缓存标识符。如果该标识符不存在且此属性为 True,则将标识符放入缓存中。 |
record-hashing-algorithm |
用于对缓存键进行哈希处理的算法。 |
record-reader |
指定用于读取传入数据的控制器服务 |
record-writer |
指定用于写出记录的控制器服务 |
关系¶
名称 |
描述 |
---|---|
duplicate |
检测为重复的记录将路由到此关系。 |
failure |
如果无法与缓存通信,则 FlowFile 会受到惩罚并路由到此关系 |
non-duplicate |
缓存中找不到的记录将路由到此关系。 |
original |
除非出现致命错误,否则原始输入 FlowFile 将被发送到此关系中。 |
写入属性¶
名称 |
描述 |
---|---|
record.count |
写入目标 FlowFile 的记录数。 |