빅데이터/Apache Nifi / / 2023. 12. 21. 09:18

Nifi Database 04. Processor 설명

동기화 업무를 수행하기 위해 사용한 Processor 위주의 설명입니다.

 

사용할 Processor 종류는 다음과 같습니다.

  • ExecuteSQL
  • ConvertAvroToJSON
  • SplitJson
  • EvaluateJsonPath
  • PutSQL
  • UpdateAttribute
  • MergeRecord

ExecuteSQL

제공된 SQL 선택 쿼리를 실행합니다. 쿼리 결과는 Avro 형식으로 변환됩니다.

 

 

가져온 ExecuteSQL의 모습과 이슈 사항의 이미지

최초 생성시 이슈 사항으로 'Database Connections Pooling Servie' 와 'Relationship success/failure' 

 

ExecuteSQL Properties 주요 설정사항은 총 2가지입니다.

 

Database Connection Pooling Sevice

  • 설명: 데이터 베이스 연결을 얻기 위해 사용되는 컨트롤러 서비스입니다. 
             (블로그 글 '02. Connection Pool' 설정 된 Connection Pool을 사용)

  • 예시: [DB] DBCPConnectionPool / venus_main 선택

 

SQL select query

  • 설명: 실행할 SQL SELECT 쿼리

 

 

이외 속성들은 동기화 업무에서 활용하지는 않기 때문에 생략하겠습니다.필요시 https://nifi.apache.org/docs.html 에서 확인 할 수 있습니다.

 


ConvertAvroToJSON

Avro 레코드를 JSON 객체로 변환합니다.

ConvertAvroToJSON Properties 주요 설정사항은 총 2가지입니다.

 

JSON container options

  • 설명: 레코드 스트림이 노출되는 방식을 결정합니다. 기본값은 배열입니다.

Wrap Single Record

  • 설명: 비어 있는 레코드나 하나의 레코드만 있을 때 그 결과를 'JSON container options' 에 지정된 배열에 넣을지 결정합니다. 기본값은 false 이지만 일관성있는 처리를 위해 true로 설정해줍니다.

SplitJson

JSON 표현식으로 작성된 레코드를 여러 개의 별도 FlowFile로 분할합니다.

SplitJson Properties 주요 설정사항은 JsonPath Expression입니다.

 

JsonPath Expression

  • 설명: JSON에서 조각을 만들 배열 요소를 적용할 JsonPath 표현식입니다.
             조건없이 단일 레코드로 나눌시 $[*] 로 작성합니다.
             표현식을 상세하게 작성하여 조건을 적용 할 수도 있습니다.

EvaluateJsonPath

FlowFile의 내용에서 사용자가 정의한 속성을 추가합니다.

Destination

  • 설명: JsonPath 평가 결과를 Flowfile 콘텐츠 또는 속성에 쓸지 나타냅니다. 콘텐츠로 설정 할 경우 하나의 JsonPath만           지정할 수 있기 때문에 주로 flowfile-attribute를 선택하여 속성에 작성합니다.

속성 추가

  • 설명: Json 데이터를 활용하여 다양한 속성 변수를 선언하여 사용합니다.
             ( 많은 속성을 수기로 등록/사용이 불편할 수있어 다른 유연한 방법을 추가로 확인 중입니다)


PutSQL

PutSQL Properties 주요 설정사항은 총 2가지이고 ExecuteSQL과 동일합니다.

 

PutSQL은 UPDATE 또는 INSERT 명령을 실행합니다.

유사한 프로세서인 PutDatabaseRecord와 다른 큰 특징은 직접 SQL문을 작성하여 넣을수 있는점입니다.


UpdateAttribute

FlowFile의 속성을 업데이트하거나 추가, 수정, 삭제 할 수있습니다.
일반적인 사용방법은 EvaluateJsonPath와 유사하며 '속성 표현식 삭제' 를 작성할 수 있습니다.


MergeRecord

 

여러개의 FlowFile을 작성 조건에 맞추어 병합합니다.

SplitJson Properties 주요 설정사항은 Correlation Attribute Name입니다.

 

Correlation Attribute Name

  • 설명: 속성 값을 설정하여 동일한 값을 갖는 경우 함께 묶이도록 기준을 작성 할 수 있습니다.

 

여기까지 동기화 템플릿에 사용된 프로세서들에 대한 설정 방법을 확인했습니다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유