ListFile
ListFile
입력 디렉터리에서 파일 목록을 가져오는 프로세서예요. 나열된 각 파일에 대해 파일을 나타내는 FlowFile을 생성해서 FetchFile과 함께 가져올 수 있어요. ‘Input Directory Location’이 ‘Remote’로 설정되면 이 프로세서는 클러스터에서 Primary Node에서만 실행되도록 설계됐어요. primary node가 변경되어도 새 Primary Node가 모든 데이터를 중복하지 않고 이전 노드가 중단한 지점부터 이어서 처리해요. ‘Input Directory Location’이 ‘Local’이면 ‘Execution’ 모드는 무엇이든 될 수 있고 동기화는 발생하지 않아요. GetFile과 달리 이 프로세서는 로컬 파일 시스템에서 데이터를 삭제하지 않아요.
출처: Snowflake 문서
본문
기능 — 일반 제공(Generally Available)
Openflow Snowflake 배포는 AWS, Azure, GCP Commercial 리전의 모든 계정에서 사용할 수 있어요. Openflow BYOC 배포는 AWS Commercial 리전의 모든 계정에서 사용할 수 있어요.
Bundle
org.apache.nifi | nifi-standard-nar
설명 (Description)
입력 디렉터리에서 파일 목록을 가져와요. 나열된 각 파일에 대해 파일을 나타내는 FlowFile을 생성해서 FetchFile과 함께 가져올 수 있어요. ‘Input Directory Location’이 ‘Remote’로 설정되면 이 프로세서는 클러스터에서 Primary Node에서만 실행되도록 설계됐어요. primary node가 변경되면 새 Primary Node가 모든 데이터를 중복하지 않고 이전 노드가 중단한 지점부터 이어서 처리해요. ‘Input Directory Location’이 ‘Local’이면 ‘Execution’ 모드는 무엇이든 될 수 있고 동기화는 발생하지 않아요. GetFile과 달리 이 프로세서는 로컬 파일 시스템에서 어떤 데이터도 삭제하지 않아요.
태그 (Tags)
file, filesystem, get, ingest, list, source
입력 요구사항 (Input Requirement)
FORBIDDEN (금지)
민감한 동적 속성 지원 (Supports Sensitive Dynamic Properties)
false
속성 (Properties)
| Property | Description |
|---|---|
| Entity Tracking Initial Listing Target | 초기 목록을 처리하는 방법을 지정해요. ‘Tracking Entities’ 전략에서 사용돼요. |
| Entity Tracking Node Identifier | 추적 상태가 LOCAL로 제한될 때 목록 상태를 클러스터 전체가 아닌 NiFi 노드별로 추적할 수 있도록 구성된 값이 cache key에 추가돼요. ‘Tracking Entities’ 전략에서 사용돼요. |
| Entity Tracking State Cache | 나열된 엔티티를 지정된 캐시 저장소에 저장해서 이 프로세서가 NiFi 재시작 또는 primary node 변경 시에도 목록을 이어서 처리할 수 있게 해요. ‘Tracking Entities’ 전략은 최근 ‘Tracking Time Window’ 안에 나열된 모든 엔티티의 추적 정보를 요구해요. 많은 수의 엔티티를 지원하기 위해 이 전략은 managed state 대신 DistributedMapCache를 사용해요. Cache key 형식은 ‘ListedEntities::{processorId}(::{nodeId})’예요. 노드별로 나열된 엔티티를 추적한다면 상태를 별도로 관리하기 위해 선택적인 ‘::{nodeId}’ 부분이 추가돼요. 예: cluster wide cache key = 'ListedEntities::8dda2321-0164-1000-50fa-3042fe7d6a7b', per node cache key = 'ListedEntities::8dda2321-0164-1000-50fa-3042fe7d6a7b::nifi-node3'. 저장된 cache 내용은 Gzipped JSON string이에요. 대상 목록 구성이 변경되면 cache key가 삭제돼요. ‘Tracking Entities’ 전략에서 사용돼요. |
| Entity Tracking Time Window | 이 프로세서가 이미 나열된 엔티티를 얼마나 오래 추적할지 지정해요. ‘Tracking Entities’ 전략은 지정된 시간 창 안에 있는 타임스탬프의 엔티티를 선택할 수 있어요. 예를 들어 ’30 minutes’로 설정하면 최근 30분 내 타임스탬프를 가진 엔티티가 이 프로세서 실행 시 목록 대상이 돼요. 다음 조건 중 하나가 충족되면 나열된 엔티티는 ‘new/updated’로 간주되고 FlowFile이 생성돼요. 1. 이미 나열된 엔티티에 존재하지 않음, 2. 캐시된 엔티티보다 새 타임스탬프를 가짐, 3. 캐시된 엔티티와 크기가 다름. 캐시된 엔티티의 타임스탬프가 지정된 시간 창보다 오래되면 해당 엔티티는 캐시된 이미 나열된 엔티티에서 제거돼요. ‘Tracking Entities’ 전략에서 사용돼요. |
| File Filter | 이름이 주어진 정규식과 일치하는 파일만 선택돼요. |
| Ignore Hidden Files | 숨김 파일을 무시할지 여부를 나타내요. |
| Include File Attributes | 파일의 Last Modified Time과 Owner 같은 정보를 FlowFile Attributes로 포함할지 여부예요. 사용 중인 파일 시스템에 따라 이 정보를 수집하는 것은 비용이 들 수 있으므로 비활성화해야 해요. 특히 원격 파일 공유의 경우 그렇습니다. |
| Input Directory | 파일을 가져올 입력 디렉터리예요. |
| Input Directory Location | Input Directory가 어디에 있는지 지정해요. 상태를 로컬에 저장할지 클러스터 전체에 저장할지 결정하는 데 사용돼요. |
| Listing Strategy | new/updated 엔티티를 결정하는 방법을 지정해요. 자세한 내용은 각 전략 설명을 참고하세요. |
| Maximum File Age | 파일을 가져오기 위한 최대 수명이에요. 이 시간보다 오래된 파일(마지막 수정 날짜 기준)은 무시돼요. |
| Maximum File Size | 파일을 가져오기 위한 최대 크기예요. |
| Minimum File Age | 파일을 가져오기 위한 최소 수명이에요. 이 시간보다 최신 파일(마지막 수정 날짜 기준)은 무시돼요. |
| Minimum File Size | 파일을 가져오기 위한 최소 크기예요. |
| Path Filter | Recurse Subdirectories가 true일 때 경로가 주어진 정규식과 일치하는 하위 디렉터리만 스캔돼요. |
| Record Writer | 목록을 만드는 데 사용할 Record Writer를 지정해요. 지정하지 않으면 나열된 각 엔티티마다 FlowFile 하나가 생성돼요. 지정하면 모든 엔티티가 개별 FlowFiles에 속성을 추가하는 대신 단일 FlowFile에 기록돼요. |
| Recurse Subdirectories | 디렉터리의 하위 디렉터리에서도 파일을 나열할지 여부를 나타내요. |
| Target System Timestamp Precision | 대상 시스템의 타임스탬프 정밀도를 지정해요. 이 프로세서는 어떤 것을 나열할지 결정하기 위해 엔티티의 타임스탬프를 사용하므로 올바른 타임스탬프 정밀도를 사용하는 것이 중요해요. |
| max-listing-time | 단일 디렉터리 목록에 걸릴 것으로 예상되는 최대 시간이에요. ‘Input Directory’ 속성이 지정한 디렉터리 목록 또는('Recurse'가 true인 경우) 어떤 하위 디렉터리 목록이 이 시간보다 오래 걸리면 이 시간을 초과하는 각 디렉터리 목록에 대해 경고 bulletin이 생성돼요. |
| max-operation-time | 단일 디스크 작업에 걸릴 것으로 예상되는 최대 시간이에요. 어떤 디스크 작업이 이 시간보다 오래 걸리면 이 시간을 초과하는 각 작업에 대해 경고 bulletin이 생성돼요. |
| max-performance-metrics | ‘Track Performance’ 속성이 ‘true’로 설정되면 이 속성은 성능 메트릭을 보유해야 하는 파일의 최대 수를 나타내요. 이 속성의 값이 작을수록 heap 사용량이 줄고, 값이 클수록 디스크 액세스 작업이 어떻게 수행되고 있는지에 대한 더 정확한 통찰을 제공할 수 있어요. |
| track-performance | 프로세서가 디스크 액세스 작업의 성능을 추적할지 여부예요. true이면 액세스되는 파일, 얻는 정보, 걸리는 시간을 포함한 모든 디스크 액세스가 기록돼요. 그런 다음 이 정보는 DEBUG 수준에서 주기적으로 기록돼요. 데이터 양은 제한되지만 이 옵션은 여전히 상당한 heap을 소비할 수 있고(‘Maximum Number of Files to Track’ 속성으로 제어됨), 성능이 저하됐을 때 문제 해결에 매우 유용할 수 있어요. |
| Track Performance | 디스크 액세스 작업을 추적하는 데 사용되는 속성이에요. (중복 항목 — 원문 참고) |
상태 관리 (State management)
| Scopes | Description |
|---|---|
| LOCAL | 파일 목록을 수행한 후 최신 파일의 타임스탬프가 저장돼요. 이렇게 하면 프로세서가 다음 실행 때 이 날짜 이후에 추가되거나 수정된 파일만 나열할 수 있어요. 상태가 Local 또는 Cluster 범위로 저장되는지는 속성 값에 따라 달라져요. |
| CLUSTER | 파일 목록을 수행한 후 최신 파일의 타임스탬프가 저장돼요. 이렇게 하면 프로세서가 다음 실행 때 이 날짜 이후에 추가되거나 수정된 파일만 나열할 수 있어요. 상태가 Local 또는 Cluster 범위로 저장되는지는 속성 값에 따라 달라져요. |
관계 (Relationships)
| Name | Description |
|---|---|
| success | 수신된 모든 FlowFile은 success로 연결돼요. |
쓰기 속성 (Writes attributes)
| Name | Description |
|---|---|
| filename | 파일 시스템에서 읽은 파일 이름이에요. |
| path | 파일 시스템의 파일 디렉터리 상대 경로로, Input Directory 속성과 비교한 값이에요. 예: Input Directory가 /tmp로 설정되면 /tmp에서 가져온 파일의 path 속성은 “/”로 설정돼요. Recurse Subdirectories 속성이 true이고 /tmp/abc/1/2/3에서 파일을 가져오면 path 속성은 “abc/1/2/3/”으로 설정돼요. |
| absolute.path | 파일 시스템의 파일 디렉터리 절대 경로로 설정돼요. 예: Input Directory 속성이 /tmp로 설정되면 /tmp에서 가져온 파일의 path 속성은 “/tmp/”로 설정돼요. Recurse Subdirectories 속성이 true이고 /tmp/abc/1/2/3에서 파일을 가져오면 path 속성은 “/tmp/abc/1/2/3/”으로 설정돼요. |
| file.owner | 파일 시스템에서 파일을 소유한 사용자예요. |
| file.group | 파일 시스템에서 파일을 소유한 그룹이에요. |
| file.size | 파일 시스템에서 파일의 바이트 수예요. |
| file.permissions | 파일 시스템에서 파일의 권한이에요. 소유자 3자, 그룹 3자, 기타 사용자 3자로 형식화돼요. 예: rw-rw-r-- |
| file.lastModifiedTime | 파일 시스템의 파일이 마지막으로 수정된 타임스탬프로 ‘yyyy-MM-dd'T'HH:mm:ssZ’ 형식이에요. |
| file.lastAccessTime | 파일 시스템의 파일이 마지막으로 액세스된 타임스탬프로 ‘yyyy-MM-dd'T'HH:mm:ssZ’ 형식이에요. |
| file.creationTime | 파일 시스템의 파일이 생성된 타임스탬프로 ‘yyyy-MM-dd'T'HH:mm:ssZ’ 형식이에요. |
함께 보기 (See also)
- org.apache.nifi.processors.standard.FetchFile
- org.apache.nifi.processors.standard.GetFile
- org.apache.nifi.processors.standard.PutFile
참고: 일부 속성의 요약 표가 원문에 중복 표기되어 있어 원문 그대로 보존했어요.