ListFTP



ListFTP 프로세서는 FTP 서버에서 파일들을 리스팅 한다. 각 파일들을 원격 서버에서 찾아내면 파일이름, 속성이 새로운 Flowfile이 생성된다. FetchFTP와 함께 사용할 수 있다.



스트리밍 사용 사례


기본적으로 프로세서는 디렉터리의 각 파일에 대해 별도의 FlowFile을 만들고 파일 이름, 경로 등에 대한 속성을 추가한다. 일반적인 사용 사례는 ListFTP를 FetchFTP 프로세서에 연결하는 것 이다. 서로 함께 사용되는 이 두 프로세서는 효율적인 스트리밍 방식으로 FTP 서버에 도착할 때 디렉토리를 쉽게 모니터링하고 새 파일의 내용을 가져올 수 있는 기능을 제공한다.



배치 사용 사례


지정된 디렉토리에 새로 도착하는 모든 파일을 처리하고 모든 파일이 처리를 완료한 경우에만 일부 작업을 수행하려는 경우 배치가 필요하다. NiFi는 시작과 끝이 있는 “작업”이 없다는 점에서 본질적으로 스트리밍 플랫폼이다.

이 문제를 해결하기 위해 ListFTP 프로세서를 선택적으로 레코드 기록기로 구성할 수 있다. 레코드 작성기가 구성되면 파일당 별도의 FlowFile 대신 디렉터리의 각 파일에 대한 레코드를 포함하는 단일 FlowFile이 생성된다. 이 패턴을 사용하면 각 파일의 내용을 가져오기 위해 레코드를 개별 FlowFile로 분할한 다음 가져와야 한다.

예를 들어 데이터 단위별로 전처리를 하고 싶을 때 RouteOnAttribute 프로세서를 활용하여 마지막 파일을 뜻하는 것이 도착하였을 때 앞에 받아 두었던 데이터를 종합하여 전처리할 수 있다.



작성법


  • Listing Strategy : 원천 데이터를 어떤 방식으로 변화에 대응할지 선택하는 옵션이다. Tracking Timestamps 의 경우 개체가 새로 생기거나 업데이트 된 시간이 최근이면 가져오는 방식이다.

  • Hostname : 원격지(FTP)의 IP나 호스트네임을 기입한다.

  • Port : FTP 서버에 지정된 Port를 기입한다.

  • Username : FTP 서버에 접근할 수 있는 ID를 기입한다.

  • Password : FTP 서버에 접근할 수 있는 PW를 기입한다.

  • Remote Path : FTP 서버에서 가져올 데이터의 경로를 지정한다. (ex. /img)

  • Search Recursively : True/False로 지정할 수 있으며, True 시 지정된 경로의 하위 경로까지 조사하여 데이터를 가져온다. False면 해당 경로에서 탐색을 마친다.