Snowflake?
Local에서 Cloud 상에 존재하는 Database로 Data를 Loading하는 Flow
간단한 Snowflake 정보
- WAREHOUSE : COMPUTE_WH (기본 제공)
- DATABASE : TEST1
- SCHEMA : PUBLIC
- Table : LOTOSN (Local To Snowflake)
- DB attribute : ID | NAME
- 간단한 실습이고 데이터 생성하기 용이하게 쉽게 설계
Local에서 Snowflake로 Data를 Load
- Local은 이미 진행했기 때문에,
Snowflake에 관한 Processor를 설정한다.
- Snowflake라는 서비스의 Database이기 때문에 PutDatabaseRecord를 생성한다.
- Record Reader
- 들어오는 데이터를 구문 분석 및 데이터의 스키마를 결정하는데 사용할 컨트롤러 서비스를 지정
- Statement Type
- 생성할 SQL 문의 유형을 지정
- Database Connection Pooling Service
- 레코드 전송을 위해 데이터베이스에 연결하는 데 사용되는 컨트롤러 서비스
- Catalog Name
- 명령문이 업데이트해야 하는 카탈로그의 이름
- Schema Name
- 테이블이 속한 스키마의 이름
- Table Name
- 명령문이 영향을 미치는 테이블의 이름
이 중 Record Reader와 Database Connection Pooling Service는 바로 설정할 수 없다.
- 해당 속성은 따로 생성한 다음, 해당 Processor와 연결해야 한다.
빈 곳에 오른쪽 마우스 클릭 후 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
이후, 해당 드라이버 디렉토리 위치를 설정한다.
Snowflake DB 사용자와 Password 설정한다.
위와 같이 유효성 검사에 모두 통과하면,
Snowflake용 JDBC Connection Pool이 생성된 것이다.
CSVReader에 경우 기본 설정이 본인의 Data에 적합하여 수정하지 않고 설정한다.
오른쪽에 번개 마크를 클릭하면,
해당 Controller Service를 활성화할 수 있다.
- 모두 활성화한다.
이후, 다시 돌아와서 Record Reader와 D.C.P.S를 설정한다.
그리고 나머지 설정값도 맞게 설정해준다.
마찬가지로 유효성 검사를 통과한다.
Processor Relationship 유효성 통과를 위해 Relationships 설정한다.
- 성공, 실패 그리고 재시도 시, 각각의 처리를 설정한다.
임의로 생성한 나의 Data이다.
- csv 파일 형식이다.
다음은 Snowflake DB에 Data가 들어간 상태이다.