ListGoogleDrive

ListGoogleDrive

Google Drive 폴더에서 실제 파일(단축 바로가기(shortcut)는 무시) 목록을 수행하는 프로세서예요. ‘Record Writer’ 속성을 설정하면 단일 Output FlowFile이 생성되고, 목록의 각 파일이 출력 파일에 단일 레코드로 기록돼요. 그렇지 않으면 목록의 각 파일에 대해 개별 FlowFile이 생성되고 메타데이터는 FlowFile 특성으로 기록돼요. 이 프로세서는 클러스터에서 Primary Node에서만 실행되도록 설계됐어요. primary node가 변경되어도 새 Primary Node가 모든 데이터를 중복하지 않고 이전 노드가 중단한 지점부터 이어서 처리해요. Google Drive 액세스를 설정하려면 Additional Details를 참고하세요.

출처: Snowflake 문서

본문

기능 — 일반 제공(Generally Available)

Openflow Snowflake 배포는 AWS, Azure, GCP Commercial 리전의 모든 계정에서 사용할 수 있어요. Openflow BYOC 배포는 AWS Commercial 리전의 모든 계정에서 사용할 수 있어요.

Bundle

org.apache.nifi | nifi-gcp-nar

설명 (Description)

Google Drive 폴더에서 실제 파일(단축 바로가기는 무시) 목록을 수행해요. ‘Record Writer’ 속성을 설정하면 단일 Output FlowFile이 생성되고 목록의 각 파일이 출력 파일에 단일 레코드로 기록돼요. 그렇지 않으면 목록의 각 파일에 대해 개별 FlowFile이 생성되고 메타데이터는 FlowFile 특성으로 기록돼요. 이 프로세서는 클러스터에서 Primary Node에서만 실행되도록 설계됐어요. primary node가 변경되면 새 Primary Node가 모든 데이터를 중복하지 않고 이전 노드가 중단한 지점부터 이어서 처리해요. Google Drive 액세스를 설정하려면 Additional Details를 참고하세요.

태그 (Tags)

drive, google, storage

입력 요구사항 (Input Requirement)

FORBIDDEN (금지)

민감한 동적 속성 지원 (Supports Sensitive Dynamic Properties)

false

속성 (Properties)

Property Description
Entity Tracking Initial Listing Target 초기 목록을 처리하는 방법을 지정해요. ‘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’ 전략에서 사용돼요.
Listing Strategy new/updated 엔티티를 결정하는 방법을 지정해요. 자세한 내용은 각 전략 설명을 참고하세요.
Record Writer 목록을 만드는 데 사용할 Record Writer를 지정해요. 지정하지 않으면 나열된 각 엔티티마다 FlowFile 하나가 생성돼요. 지정하면 모든 엔티티가 개별 FlowFiles에 속성을 추가하는 대신 단일 FlowFile에 기록돼요.
connect-timeout Google Drive 서비스에 연결하기 위한 최대 대기 시간이에요.
folder-id 파일 목록을 가져올 폴더의 ID예요. Google Drive 액세스 설정과 Folder ID를 얻는 방법은 Additional Details를 참고하세요. 경고: 폴더에 대한 권한이 없는 액세스는 폴더가 비어 있는 것처럼 처리돼요. 이로 인해 프로세서가 출력 FlowFiles를 생성하지 않아요. 추가 오류 메시지는 제공되지 않아요.
gcp-credentials-provider-service Google Cloud Platform 자격 증명을 얻는 데 사용하는 Controller Service예요.
min-age 파일이 고려되기 위한 최소 수명이에요. 이보다 최신 파일은 무시돼요.
proxy-configuration-service 네트워크 요청을 프록시할 Proxy Configuration Controller Service를 지정해요.
read-timeout Google Drive 서비스의 응답에 대한 최대 대기 시간이에요.
recursive-search ‘true’이면 실제 하위 폴더(shortcut 무시)의 파일 목록을 포함해요. 그렇지 않으면 정의된 ‘Folder ID’를 부모로 직접 갖는 파일만 반환해요. 경고: 하위 폴더가 너무 많으면(500개 이상) 목록이 실패할 수 있어요.

상태 관리 (State management)

Scopes Description
CLUSTER 이미 나열된 파일을 추적할 수 있도록 필요한 데이터를 저장해요. 정확히 무엇을 저장해야 하는지는 ‘Listing Strategy’에 따라 달라져요. 상태는 클러스터 전체에 저장되므로 이 프로세서를 Primary Node에서만 실행할 수 있고, 새 Primary Node가 선택되면 새 노드가 데이터를 중복하지 않고 이전 노드가 중단한 지점부터 이어서 처리할 수 있어요.

관계 (Relationships)

Name Description
success 수신된 모든 FlowFile은 success로 연결돼요.

쓰기 속성 (Writes attributes)

Name Description
drive.id 파일의 id예요.
filename 파일 이름이에요.
mime.type 파일의 MIME type이에요.
drive.size 파일의 크기예요. 파일 크기를 알 수 없으면(예: 외부 저장 파일) 0으로 설정돼요.
drive.size.available 파일 크기를 알고 있는지/사용 가능한지 여부를 나타내요.
drive.timestamp 파일의 마지막 수정 시간 또는 생성 시간(둘 중 더 큰 값)이에요. 그 이유는 파일의 원래 수정 날짜가 Google Drive에 업로드될 때 보존되기 때문이에요. ‘Created time’은 업로드가 발생한 때를 기준으로 해요. 하지만 업로드된 파일은 나중에 수정될 수도 있어요.
drive.created.time 파일의 생성 시간이에요.
drive.modified.time 파일의 마지막 수정 시간이에요.
drive.path 기본 디렉터리부터 파일 디렉터리의 경로예요. Google Drive는 파일 이름에 ‘/’(슬래시)와 ‘\’(백슬래시)를 포함한 특수 문자를 허용하므로 경로에는 URL 인코딩된 폴더 이름이 담겨요. URL 인코딩된 폴더 이름은 경로에서 ‘/’로 구분돼요.
drive.owner 파일의 소유자예요.
drive.last.modifying.user 파일을 마지막으로 수정한 사용자예요.
drive.web.view.link 파일에 대한 웹 보기 링크예요.
drive.web.content.link 파일에 대한 웹 콘텐츠 링크예요.
drive.parent.folder.id 파일의 부모 폴더 id예요.
drive.parent.folder.name 파일의 부모 폴더 이름이에요.
drive.listed.folder.id 나열된 기본 폴더의 id예요.
drive.listed.folder.name 나열된 기본 폴더의 이름이에요.
drive.shared.drive.id 공유 드라이브의 id예요(파일이 공유 드라이브에 있는 경우).
drive.shared.drive.name 공유 드라이브의 이름이에요(파일이 공유 드라이브에 있는 경우).

함께 보기 (See also)

  • org.apache.nifi.processors.gcp.drive.FetchGoogleDrive
  • org.apache.nifi.processors.gcp.drive.PutGoogleDrive

더 알아보기 (Learn more)