[NiFi] CSV To Json 실습

CHAN LIM·2024년 1월 3일
0

NiFi

목록 보기
9/13
post-thumbnail

Intro.

(Local에서) CSV 파일을 JSON으로 변형 후 이관하기

  • 해당 과정을 알게 되면,
    꼭 Local에서만이 아니더라도 변형 후 이관 과정을 알 수 있을 것이라고 기대한다.

0. 전체 프로세스

  • 이전에 사용했던 프로세스도 존재하지만,
    새로운 프로세스도 존재하기 때문에 해당 부분을 상세 설명하면서 진행할 것.

1. Processor 생성

1.1 GetFile

Local에서 File을 가져오는 프로세서

  • 이전에 사용했던 프로세서이므로 익숙할 것
  • Input Directory 속성만 설정하면 된다.
    • 파일을 가져올 디렉토리 경로 설정.

1.2 ConvertRecord

Record를 변환하는 새로운 Processor

  • Record Reader
    • 들어오는 데이터를 읽는 데 사용할 컨트롤러 서비스를 지정한다.
    • CSV 파일을 읽을 것이기 때문에 CSVReader로 지정
  • Record Writer
    • 레코드 작성에 사용할 컨트롤러 서비스를 지정한다.
    • CSV를 Json으로 변환할 것이기 때문에 JsonRecordSetWriter로 지정
  • Include Zero Record FlowFile
    • 들어오는 FlowFile을 변환할 때 변환 결과 데이터가 없는 경우,
      이 속성은 해당 관계에 FlowFile을 보낼지 여부를 지정한다.

Controller Service

  • DB를 연결할 때 사용하던 DBCP와 다르게,
    Reader와 Writer는 NiFi Default Service를 그대로 사용하면 된다.

1.3 UpdateAttribute

속성 표현 언어를 사용하여
FlowFile의 속성을 업데이트하거나 정규식을 기반으로 삭제하는 Processor

해당 프로세서의 사용 목적은 File의 확장자를 변경하기 위함이다.

  • 해당 프로세서의 속성을 확인하면 위와 같습니다.
    아무리 찾아봐도 파일 이름을 설정하는 방법이 없다.
    • 그래서, 직접 설정을 추가해야 한다.

      • + 클릭 후,

      • 추가해준다.

  • 위와 같이 작성해주면 완료된다.
    • 파일 이름에서 . 이전까지 유지하고 .json을 붙인다.

1.3.★ filename에 관하여...

  • filename은 모든 FlowFile의 공통 속성 Attributes중 하나이다.
  • NiFi Expression Language를 사용한 것이다.
    • NiFi Expression Language : Flowfile의 Attribute를 사용하여 원하는 값을 구하도록 도와주는 NiFi 내장 언어
    • 공식 문서

1.4 Putfile

File을 내보내는 프로세서

  • File을 내보낼 Local 디렉터리를 설정하면 된다.

1.5 LogMessage

Log를 생성하는 프로세서

  • 사용자가 임의로 생성한 로그를 생성하는 프로세서로,
    CSV2JSON이 성공하면 해당 log를 생성하도록 Flow를 설정한다.


2. 결과

  • start

csv파일 확인

  • NiFi 동작

  • end

변환 시,
파일 이름은 그대로고 데이터 형식만 바뀌는 부분에 대해서 고려해야 할 부분이라고 생각된다.

profile
클라우드, 데이터, DevOps 엔지니어 지향 || 글보단 사진 지향

0개의 댓글