본문 바로가기
BIG DATA/NiFi

Apache NiFi 에서 FlowFile 이란...개념과 디버깅방법

by 골든크랩 2025. 5. 14.
728x90
반응형

**Apache NiFi에서 FlowFile**은 데이터 이동의 가장 기본 단위입니다.
쉽게 말하면, **데이터 1건 + 그에 대한 정보(속성)**을 담고 있는 운반 상자 같은 존재입니다.


📦 FlowFile 구성요소

  1. Content (내용)
    • 실제 데이터 자체입니다.
      예: 텍스트 파일, JSON, CSV, 이미지, 로그 한 줄 등
  2. Attributes (속성)
    • 해당 데이터에 대한 메타정보입니다.
      예: 파일 이름, 경로, 수집 시간, MIME 타입, 처리 상태 등
      → key-value 형식의 정보로 Processor 간 전파되어 흐름을 제어할 수 있어요.

💡 예시로 이해해보기

항목내용
FlowFile 내용 {"user": "왕자님", "action": "login"}
Attributes filename=login.json, uuid=abc-123, mime.type=application/json
 

이런 FlowFile이 Processor들을 거치며

  • 필터링되고,
  • 변환되고,
  • 라우팅되고,
  • 저장되죠.

🧭 NiFi에서 FlowFile이 하는 일

동작의미
이동 Processor 간 이동하며 작업됨
업데이트 Processor가 Content 또는 Attribute를 변경
분기 (Route) 조건에 따라 다른 경로로 흐름 전환
복제 (Clone) 같은 데이터로 여러 경로 동시에 처리
삭제 (Drop) 작업이 끝나면 사라짐
 

🧠 핵심 요약

FlowFile = 콘텐츠(Content) + 속성(Attribute)
→ NiFi에서 데이터 흐름을 구성하는 기본 단위 객체

 

 

 

 

NiFi에서 FlowFile의 내부 구조를 확인하는 방법은 여러 가지가 있는데, GUI에서 직관적으로 확인하거나 로그/디버깅 도구로 자세히 파악할 수도 있어요. 실전 운영, 개발 시 모두 유용하죠.


✅ 1. GUI에서 FlowFile 정보 확인 방법

  1. NiFi 화면에서 특정 Processor를 선택
    예: ListFile, ExtractText, PutFile 등
  2. Processor에서 **큐(Queue)**를 클릭 (Processor 간 연결선 중간의 큐 영역)
  3. 오른쪽 상단의 🔍(큐 확인) 아이콘 클릭
  4. 나타난 FlowFile 목록에서 하나를 클릭
    • Attributes 탭: 메타데이터 (파일명, 경로, MIME 타입, 커스텀 변수 등)
    • Content 탭: 실제 데이터 본문 (텍스트 또는 hex/raw)
  5. → 아래 두 가지를 확인 가능:

💡 이 방법은 운영 중인 FlowFile을 직접 눈으로 확인할 수 있어서 디버깅에 매우 유용합니다.


✅ 2. Processor 내에서 로그로 확인

  • 대부분의 Processor는 FlowFile 정보를 **로그(debug level)**로 출력할 수 있어요.

예시:

[DEBUG] org.apache.nifi.processor.LogAttribute
FlowFile Attributes:
- filename = test.csv
- uuid = 84b6a9de-3281-4b3a-9c4a-07bcaea29b73
- path = /input
- mime.type = text/csv

👉 LogAttribute Processor를 중간에 삽입하면, FlowFile의 내용을 쉽게 로그로 확인 가능.


✅ 3. NiFi Expression Language 사용

Processor 설정 시 속성값에 다음과 같이 써서 확인 가능:

${filename}
${uuid}
${mime.type}
${my.custom.attribute}

이렇게 하면 조건 분기, 파일명 재정의, 경로 결정 등에 활용할 수 있습니다.


✅ 4. NiFi API 또는 Custom Processor로 확인

NiFi는 내부적으로 FlowFileRepository + ContentRepository를 통해 FlowFile을 관리합니다.
Java로 Custom Processor를 작성하면, 다음처럼 FlowFile 내부를 직접 다룰 수 있어요:

FlowFile flowFile = session.get();
String filename = flowFile.getAttribute("filename");
InputStream content = session.read(flowFile);

→ 이런 식으로 자체 로직으로 내용 분석, 추출, 변경이 가능하죠.


🧠 정리

방법목적
GUI(큐에서 FlowFile 클릭) 실시간 확인 + 디버깅
LogAttribute Processor 속성 + 본문 로그 출력
Expression Language 조건 제어 및 속성 활용
Java API(Custom Processor) 세밀한 내부 접근 및 제어
728x90
반응형

'BIG DATA > NiFi' 카테고리의 다른 글

NiFi 1.16.3 수동설치 - Windows 11에  (0) 2025.05.15
Apache NiFi Expression Language(NiFi EL)  (0) 2025.05.14
NiFi에서 **Workflow(워크플로우)**란?  (0) 2025.05.14
Apache NiFi란....  (0) 2025.05.14
NiFi Registry  (0) 2023.11.13

댓글