DeduplicateRecord 프로세서
DeduplicateRecord 프로세서
Snowflake Openflow의 DeduplicateRecord 프로세서에 대한 문서예요. 레코드 세트 안에서 중복된 레코드를 제거하는 데 사용하는 프로세서로, 메모리 기반 해시셋(HashSet)이나 블룸 필터(Bloom Filter)를 이용해 파일 단위로 중복을 제거하거나, 분산 맵 캐시를 이용해 여러 파일에 걸친 중복까지 처리할 수 있어요.
출처: Snowflake 문서
본문
기능 — 일반 제공(Generally Available)
Openflow Snowflake 배포는 AWS, Azure, GCP 상용(Commercial) 리전의 모든 계정에서 사용할 수 있어요. Openflow BYOC 배포는 AWS 상용(Commercial) 리전의 모든 계정에서 사용할 수 있어요.
번들(Bundle)
org.apache.nifi | nifi-standard-nar
설명(Description)
이 프로세서는 레코드 세트 내의 개별 레코드를 중복 제거해요. 메모리 기반 해시셋(hashset) 또는 블룸 필터(bloom filter)를 사용해 파일 단위로 동작할 수 있고, 분산 맵 캐시(distributed map cache)로 구성하면 여러 파일에 걸친 레코드까지 중복 제거해요.
태그(Tags)
change, dedupe, distinct, dupe, duplicate, filter, hash, modify, record, replace, text, unique, update
입력 요구사항(Input Requirement)
REQUIRED
민감 동적 속성 지원(Supports Sensitive Dynamic Properties)
false
속성(Properties)
| 속성(Property) | 설명(Description) |
|---|---|
| bloom-filter-certainty | BloomFilter 유형 사용 시 원하는 위양성(false positive) 확률이에요. 예를 들어 .05 값을 사용하면 5% 확률로 위양성 결과가 나오는 것을 보장해요. 1에 가까울수록 결과가 정밀해지지만 그만큼 저장 공간을 더 많이 사용해요. |
| cache-identifier | 레코드의 계산된 캐시 키를 덮어쓰는 선택적 표현식 언어(Expression Language) 필드예요. 이 필드에는 ${record.hash.value}라는 추가 속성이 제공되는데, 동적 속성(설정된 경우)이나 레코드 필드에서 파생된 캐시 키를 담고 있어요. |
| deduplication-strategy | 중복 레코드를 감지하고 라우팅하는 데 사용할 전략이에요. 단일 FlowFile 내 중복 감지는 메모리에서 동작하고, 여러 FlowFile에 걸친 감지는 분산 맵 캐시를 사용해요. |
| distributed-map-cache | 중복 제거 전략이 'multiple files'로 설정된 경우 필수 속성이에요. 각 레코드에 대해 캐시 키가 존재하는지 원자적으로 확인하고, 없으면 설정해요. |
| filter-capacity-hint | 처리할 고유 레코드 총 수에 대한 추정값이에요. 이 숫자가 정확할수록 BloomFilter의 위음성(false negative)이 줄어들어요. |
| filter-type | 일치하는 RecordPath 기준으로 레코드가 이전에 보인 적 있는지 판단하는 데 사용할 필터예요. hash set을 선택하면 Java HashSet 객체를 사용해 모든 레코드를 중복 제거하고, bloom filter를 선택하면 블룸 필터를 사용해요. 블룸 필터 옵션은 메모리를 덜 사용하지만 위양성이 발생할 수 있어요. |
| include-zero-record-flowfiles | duplicate 또는 non-duplicate 관계로 보내는 FlowFile에 레코드가 하나도 없다면, 이 속성이 false일 때 FlowFile을 버려요. 그렇지 않으면 빈 FlowFile을 내보내요. |
| put-cache-identifier | 각 레코드에 대해 캐시 식별자가 분산 맵 캐시에 존재하는지 확인하고, 존재하지 않으면서 이 속성이 true이면 식별자를 캐시에 넣어요. |
| record-hashing-algorithm | 캐시 키를 해시하는 데 사용할 알고리즘aseyo. |
| record-reader | 들어오는 데이터를 읽는 데 사용할 Controller Service를 지정해요. |
| record-writer | 레코드를 기록하는 데 사용할 Controller Service를 지정해요. |
관계(Relationships)
| 이름(Name) | 설명(Description) |
|---|---|
| duplicate | 중복으로 감지된 레코드는 이 관계로 라우팅돼요. |
| failure | 캐시와 통신할 수 없으면 FlowFile에 패널티(penalty)가 주어지고 이 관계로 라우팅돼요. |
| non-duplicate | 캐시에서 찾을 수 없는 레코드는 이 관계로 라우팅돼요. |
| original | 치명적인 오류가 발생하지 않는 한 원본 입력 FlowFile이 이 관계로 보내져요. |
속성 기록(Writes attributes)
| 이름(Name) | 설명(Description) |
|---|---|
| record.count | 대상 FlowFile에 기록된 레코드 수예요. |
함께 보기(See also)
- org.apache.nifi.processors.standard.DetectDuplicate