[NiFi] Local To Snowflake 실습

CHAN LIM·2023년 12월 26일
0

NiFi

목록 보기
6/13
post-thumbnail

0. 시작하기 전에,

Snowflake?

  • 간단히 말해서, 데이터 분석을 위해 특별히 설계된 클라우드 저장소 서비스
  • 클라우드 컴퓨팅 기반 데이터 웨어하우징 기업
    • 즉, SaaS (Software as a Service)로써 데이터 웨어하우징을 제공한다.
      • 데이터 웨어하우징 : 데이터 분석을 위해 특별히 설계된 저장소

0.1. 실습에서는,

  • Snowflake에 생성한 DB Table이 있다.
  • 해당 Table에 Local Data 또는 타 DB의 Data를 Loading할 계획이자 실습이다.


1. Local to Snowflake

Local에서 Cloud 상에 존재하는 Database로 Data를 Loading하는 Flow


1.1 Snowflake DB Table 생성

간단한 Snowflake 정보

  • WAREHOUSE : COMPUTE_WH (기본 제공)
  • DATABASE : TEST1
  • SCHEMA : PUBLIC
  • Table : LOTOSN (Local To Snowflake)
    • DB attribute : ID | NAME
    • 간단한 실습이고 데이터 생성하기 용이하게 쉽게 설계

1.2 Processor 생성 및 설정

1.2.1 Processor 생성

Local에서 Snowflake로 Data를 Load

  • Local은 이미 진행했기 때문에,
    Snowflake에 관한 Processor를 설정한다.
    • Snowflake라는 서비스의 Database이기 때문에 PutDatabaseRecord를 생성한다.

1.2.2 PutDatabaseRecord 설정 1

  • Record Reader
    • 들어오는 데이터를 구문 분석 및 데이터의 스키마를 결정하는데 사용할 컨트롤러 서비스를 지정
  • Statement Type
    • 생성할 SQL 문의 유형을 지정
  • Database Connection Pooling Service
    • 레코드 전송을 위해 데이터베이스에 연결하는 데 사용되는 컨트롤러 서비스
  • Catalog Name
    • 명령문이 업데이트해야 하는 카탈로그의 이름
  • Schema Name
    • 테이블이 속한 스키마의 이름
  • Table Name
    • 명령문이 영향을 미치는 테이블의 이름

이 중 Record ReaderDatabase Connection Pooling Service는 바로 설정할 수 없다.

  • 해당 속성은 따로 생성한 다음, 해당 Processor와 연결해야 한다.

1.2.3 Record Reader 및 D.C.P.S 생성

빈 곳에 오른쪽 마우스 클릭 후 Configure 클릭한다.

+ 를 클릭하여 위와 같이 두 가지 Controller Service를 생성한다.

먼저, Snowflake와 연결할 것이므로 구분하기 쉽게 이름을 변경한다.

Snowflake 연결을 위한 Database Connection Pool 설정

  • Database Connection URL
    • 데이터베이스에 연결하는 데 사용되는 데이터베이스 연결 URL
  • Database Driver Class Name
    • 데이터베이스 드라이버 클래스 이름
  • Database Driver Location(s)
    • 드라이버 JAR 및 해당 종속성을 포함하는 파일/폴더 및/또는 URL의 쉼표로 구분된 목록
  • Database User
    • 데이터베이스 사용자 이름
  • Password
    • 데이터베이스 사용자의 비밀번호

Snowflake로 돌아와서, Admin/Accounts로 들어가면 위와 같이 정보가 있다.

위의 사슬을 클릭하면, 사용자의 Snowflake Location URL Copy할 수 있다.

Copy한 URL를 위와 같이 수정하고 입력한다.

  • jdbc인 이유는
    • NiFi가 Java 기반의 서비스이기 때문이다.

jdbc 드라이버 위치를 설정해야하는데,
그 전에 먼저 jdbc 드라이버를 설치해야한다.

다음은 DB 드라이버 클래스 이름인데, 해당 입력값이 고정이다.
net.snowflake.client.jdbc.SnowflakeDriver

# 원하는 디렉토리 위치에 이동한 이후,

wget https://repo1.maven.org/maven2/net/snowflake/snowflake-jdbc/3.14.4/snowflake-jdbc-3.14.4.jar   

이후, 해당 드라이버 디렉토리 위치를 설정한다.

  • JDBC (Java Database Connectivity)
    • JDBC는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다.
    • JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다.

Snowflake DB 사용자와 Password 설정한다.

위와 같이 유효성 검사에 모두 통과하면,
Snowflake용 JDBC Connection Pool이 생성된 것이다.

CSVReader에 경우 기본 설정이 본인의 Data에 적합하여 수정하지 않고 설정한다.

오른쪽에 번개 마크를 클릭하면,

해당 Controller Service를 활성화할 수 있다.

  • 모두 활성화한다.

1.2.4 PutDatabaseRecord 설정 2

이후, 다시 돌아와서 Record ReaderD.C.P.S를 설정한다.

그리고 나머지 설정값도 맞게 설정해준다.

마찬가지로 유효성 검사를 통과한다.

Processor Relationship 유효성 통과를 위해 Relationships 설정한다.

  • 성공, 실패 그리고 재시도 시, 각각의 처리를 설정한다.

1.2.5 Dataflow 실행

임의로 생성한 나의 Data이다.

  • csv 파일 형식이다.

다음은 Snowflake DB에 Data가 들어간 상태이다.



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

0개의 댓글