기술과 산업/AI

Apache NiFi 시리즈 5회 - 다양한 파일 포맷(JSON, CSV, XML) 데이터 처리 실습

B컷개발자 2025. 5. 15. 19:38
728x90

Apache NiFi에서 JSON, CSV, XML 등 다양한 데이터 포맷을 읽고 변환하는 방법을 실습합니다. 데이터 통합과 변환 파이프라인 구축의 핵심을 단계별로 안내합니다.

 


 

데이터 파이프라인의 현실 – 다양한 포맷의 데이터

 

실무 데이터는 절대 하나의 포맷으로만 존재하지 않습니다.

ERP 시스템에서는 CSV, 외부 API는 JSON, 레거시 시스템은 XML 등 다양한 형식이 혼재되어 있습니다.

 

데이터 엔지니어의 핵심 과제 중 하나는 이 데이터를 하나의 공통 포맷으로 통합하는 것입니다.

Apache NiFi는 이 문제를 매우 직관적이고 강력하게 해결할 수 있습니다.

 

이번 실습에서는 CSV, XML, JSON 파일을 읽어 JSON으로 통합하는 기본 파이프라인을 구축해 보겠습니다.

 


 

실습 목표

Input (CSV, XML, JSON) → ConvertRecord → Output (JSON)

 

  • 다양한 포맷의 입력 파일을 NiFi에서 읽어 JSON으로 표준화합니다.

 


 

1단계: 테스트 데이터 준비

 

 

CSV 파일 예시

order_id,customer,region
A001,John Doe,EU
A002,Jane Smith,US

 

XML 파일 예시

<order>
  <order_id>A003</order_id>
  <customer>David Lee</customer>
  <region>APAC</region>
</order>

 

JSON 파일 예시

{
  "order_id": "A004",
  "customer": "Chris Kim",
  "region": "EU"
}

각 파일을 NiFi가 접근 가능한 디렉터리에 저장합니다. (예: /Users/username/nifi-input/)

 


 

2단계: NiFi Processor 구성

 

 

a) GetFile Processor

 

  • 폴더를 지정해 파일을 주기적으로 읽어옵니다.
  • Input Directory: /Users/username/nifi-input/
  • Keep Source File: false (파일을 처리 후 삭제)

 

 

b) InferAvroSchema + ConvertRecord 조합

 

 

1. Record Reader (Input)

 

  • CSV → CSVReader
  • XML → XMLReader
  • JSON → JsonTreeReader

 

각 Reader는 Schema Access StrategyInfer Schema로 설정하면 자동으로 파일의 구조를 추론합니다.

 

 

2. Record Writer (Output)

 

  • 모든 Reader의 출력은 JsonRecordSetWriter를 사용
  • Pretty Print JSON: true

 

이렇게 하면 CSV, XML, JSON 입력이 모두 통합 JSON 포맷으로 변환됩니다.

 

 

c) PutFile Processor

 

  • 출력 JSON 파일을 저장할 디렉터리 설정
  • 예: /Users/username/nifi-output/

 


 

플로우 전체 예시

[GetFile] → [ConvertRecord (Reader: CSV/XML/JSON → Writer: JSON)] → [PutFile]

NiFi의 핵심 Record 기반 Processor를 활용해 모든 파일 포맷을 일괄적으로 JSON 표준으로 변환합니다.

 


 

실습 결과 예시

 

출력 파일 예시 (CSV 원본이 JSON으로 변환)

{
  "order_id": "A001",
  "customer": "John Doe",
  "region": "EU"
}

모든 데이터가 공통 스키마로 변환되어 데이터 레이크, 데이터베이스, API 전송 등에 바로 활용할 수 있습니다.

 


 

추가 실전 팁

 

  • Schema Registry 연동: Avro Schema를 미리 등록해 스키마를 고정할 수 있음
  • Record Validation: ConvertRecord 후 ValidateRecord Processor로 데이터 검증 가능
  • Multiple Reader Strategy: NiFi 1.15 버전 이상에서는 Multiple Record Reader를 통해 멀티 포맷 입력을 통합 가능

 

이 기능을 활용하면 파일 포맷 변경에도 파이프라인 수정이 필요 없는 유연한 데이터 처리 구조를 만들 수 있습니다.

 


 

실무 적용 예시

 

  • 금융기관: CSV 거래 기록 + XML 고객정보 + JSON 결제 기록 → JSON 통합 → Spark/Hive 적재
  • 제조업: 센서 로그 CSV + 장비 설정 XML → JSON 변환 후 실시간 대시보드 연결
  • 공공기관: 외부 API JSON → 내부 시스템 CSV → JSON 통합 저장

 


 

마무리

 

이번 실습을 통해 NiFi의 포맷 추상화(Format Abstraction) 기능의 강력함을 경험했습니다.

NiFi의 Record 기반 처리를 활용하면 데이터 포맷이 변경되거나 혼재되어도 코드 수정 없이 안정적인 통합 파이프라인을 구축할 수 있습니다.

 


 

다음 글 예고

 

Apache NiFi 시리즈 6회 - Process Group과 Template으로 데이터 파이프라인 모듈화 하기

 

  • 대규모 플로우를 모듈화하는 방법
  • Process Group 생성 및 관리
  • Template 저장과 불러오기 실습
728x90