ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Apache Nifi]DBConnector Controller 만들기(MySQL)
    데이터 엔지니어링/Nifi 2022. 4. 29. 22:30
    반응형

    목차

    • DBConnector란?
    • JDBC설치하기
    • DBConnector Controller만들기
    • ExecuteSQLRecord 프로세서를 이용하여 데이터 추출해보기

    1. DBConnector란?

    DB안에 데이터를 조작하기 위해서는 DB에 접근을 해야하는데, 접근을 하기 위해 저급언어를 사용해서 직접 접근하거나 매개체(JVM같은)를 활용하여 접근을 해야한다. 매개체를 사용하는 경우 DBConnector가 필요하다. Nifi는 apache재단 소속이기 때문에 java를 이용하고 있어 JVM Connector를 사용하기 위해서는 jdbc가 필요하다. JDBC는 각각의 DB제품회사 홈페이지에 제공하고 있으니, mssql은 microsoft mssql jdbc driver를 다운로드하고, mysql, oracle은 각각 홈페이지에서 jdbc driver를 다운 받아 사용하면 된다. 예제는 mysql이니 mysql로 들어가 다운로드 받는 것을 알아본다.

    2. JDBC설치하기

    홈페이지에서 Community Downloads를 찾아 들어가면 이미지에 보이는 것처럼 Connector j가 있다 이것을 클릭한다. JAVA 언어 이기 때문에 J가 있는 것을 설치 해야한다.

     

    MySQL :: MySQL Community Downloads

    The world's most popular open source database Contact MySQL  |  Login  |  Register

    dev.mysql.com

     

    플랫폼에 맞게 그냥 다운로드 받아사용해도 되지만, nifi에 적용할 것이라 ‘Platform Independent’를 선택 Zip파일을 다운로드 한다. linux에서한다면 Tar를 받아 압축 해제한다.

    ‘No thanks, just start my download’를 클릭하면 다운로드가 진행 된다.

     

    해당 위치에 다운로드된 zip파일을 해제하고, 해당 폴더에 들어가보면

    Connector jar파일이 있는 것을 확인이 가능하다. 여기까지하면 nifi에서 사용해 mysql db Connector준비 완료이다.

    3. DBConnector Controller만들기

    먼저 DBConnector가 필요한 Processor가 뭔지 알아 보려면 당연히 DB접속하는 Processor에서 사용한다. 아래와 같은 Processor들이다.

    • PutSql - insert 관련 Processor
    • ExecuteSQL- select 관련 Processor
    • ExecuteSQLRecord - select 관련 Processor ExecuteSql과 다른점은 select시 Writer(데이터 포맷 형식 ex) csv, json, avro등)를 지정해 줄 수 있다.

    범용적인 ExecuteSql를 사용해 보면, Database Connection PoolingService에 속성값을 클릭을 하면 아래와 같이 나오게 되는데 Create New Service를 클릭하자.

    Add Controller Service라는 팝업창이 뜨는데 DBCPConnectionPool을 사용하여 db에 접근할 수있다. 아래는 용도에 맞게 접근이 가능하다. 여기서는 DBCPConnectionPool클릭하여 만들 것이다.

    클릭하여 오른쪽 화살표 표시를 클릭하면 아래와 같은 팝업창이 나오는데 이것이 Controller를 다 볼 수 있는 창이다. 자신이 만든 DBCPConnectionPool오른쪽에 톱니바퀴를 클릭하여 설정해야 접속이 가능하다. 설정 버튼을 클릭한다.

    Configure Controller Servie라는 팝업창이 뜰것인데 1번은 JDBC주소를 입력해주는 곳이다.

    1. jdbc:mysql://자신의 주소:포트번호/DB이름으로 작성
    2. 위에서 아까 다운로드한 JDBC Connector 주소입력
    3. DB 접속 유저 정보 입력(유저 정보는 미리 생성해두자)

    이렇게 하면 DB접속을 할 수 있게 도와주는 Controller생성완료 Enabled로 표시되면 된다.

    생성한 DBConnectorPoll선택하면 설정이 끝난다.

    SQL Select query에 쿼리를 작성하고 돌려보면 아래와 같이 Avro로 보내주는 것을 알 수 있다.

    formatting하면 json형식으로도 볼수 있다.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    반응형

    댓글

Designed by Tistory.