2017-10-13 2 views
0

StreamExecutionEnvironment.readFile 메서드를 이해할 수 없습니다. FileProcessingMode에는 PROCESS_ONCE 및 PROCESS_CONTINUOUSLY의 두 가지 옵션이 있습니다. 전자를 선택하면 파일을 한 번만 처리하고 execute() 후에 종료합니다. 후자를 선택하면 파일에 줄을 추가하는 것만으로도 파일 전체를 다시 처리합니다 (예 : 마지막 처리의 맨 위에 각 단어의 수를 모두 추가). 나는 그것이 '꼬리'와 같은 것이라고 기대할 것입니다. 그것은 단지 처음부터 다시 읽는 것보다 "스트림"에서 더 많은 것을 읽습니다. 나는이 "스트리밍"에서 길을 잃었다. 아무도 우리가 '한 번'파일을 처리하고 파일이 로그 파일과 같은 텍스트가 추가되는 동안 계속할 수있는 '꼬리'가없는 이유를 설명 할 수 있습니까?Flink FileProcessingMode puzzling

답변

0

PROCESS_CONTINUOUSLY를 사용하면 Flink가 타임 스탬프를 상태로 유지하고 타임 스탬프보다 새로운 파일을 수집합니다. 당신의 관찰은 정확하지만, 이것이 잘 작동하는 경우가 있습니다. PROCESS_CONTINUOUSLY를 파일이 아닌 디렉토리와 함께 사용하고 파일이 완료되고 처리 될 준비가되면 주기적으로 파일을 해당 디렉토리로 이동하면 "정확히 한 번"동작을 얻을 수 있습니다.