DeduplicateRecord 2025.5.31.15

捆绑包

org.apache.nifi | nifi-standard-nar

描述

该处理器对记录集中的单个记录进行去重处理。它可以使用内存中的哈希集或布隆过滤器,按文件进行操作。配置分布式映射缓存时,它可跨多文件对记录进行去重处理。

标签

change、dedupe、distinct、dupe、duplicate、filter、hash、modify、record、replace、text、unique、update

输入要求

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 中不包含任何记录,则此属性中的 false 值会导致 FlowFile 被丢弃。否则,会发出空 FlowFile。

put-cache-identifier

对于每条记录,检查分布式映射缓存中是否存在缓存标识符。如果该标识符不存在且此属性为 True,则将标识符放入缓存中。

record-hashing-algorithm

用于对缓存键进行哈希处理的算法。

record-reader

指定用于读取传入数据的控制器服务

record-writer

指定用于写出记录的控制器服务

关系

名称

描述

duplicate

检测为重复的记录将路由到此关系。

failure

如果无法与缓存通信,则 FlowFile 会受到惩罚并路由到此关系

non-duplicate

缓存中找不到的记录将路由到此关系。

original

除非出现致命错误,否则原始输入 FlowFile 将被发送到此关系中。

写入属性

名称

描述

record.count

写入目标 FlowFile 的记录数。

另请参阅

语言: 中文