SnowFlake 와 AWS Connetcion ( feat. SQL )

2024. 1. 26. 14:22it

반응형

SnowFlake And AWS Connetcion  하는 방법을 알아보겠다. 해당 기능은 snowflake의 worksheets에서 작업을 하겠다.

 

 

1. Snow Flake 화면에서 worksheets를 클릭

 

 

 

 

 

2. worksheets에서 + 버튼을 클릭 후, SQL 를 선택한다. 

 

 

 

3. 데이터베이스를 생성한다. 

 

반응형

 

create database TEST

 

그럼 왼쪽 데이터베이스 리스트에 [TEST] 가 생긴 걸 볼 수 있다. 

 

4. 파일 포멧을 만든다. 

CREATE OR REPLACE FILE FORMAT PARQUT_SNAPPY
TYPE = parquet
COMPRESSION = SNAPPY;

 

파일 포멧을 파일을 읽을 때, 사용하는 포맷을 사용하면 된다. 나는 Parquet.snappy 파일 기준으로 생성했다. 

 

 

5. SnowFlake의 strage를 AWS의 s3랑 연결한다. 

 

'{ }' 로 채워진 부분을 각자의 경로를 입력한다. 

CREATE STAGE IF NOT EXISTS {stage_name}
URL = 's3://{s3_bucket}/{s3_prefix}''
CREDENTIALS = (
    AWS_KEY_ID='{aws_access_key}',
    AWS_SECRET_KEY='{aws_secret_key}'
);

 

 

6. 웨어하우스를 생성한다. ( 자원 할당 ) 

CREATE WAREHOUSE my_warehouse
WAREHOUSE_SIZE = 'X-SMALL'
WAREHOUSE_TYPE = 'STANDARD'
AUTO_SUSPEND = 120
AUTO_RESUME = TRUE;

 

 

 

7. SnowFlake의 테이블을 생성한다. 

해당 쿼리는 아래와 같이 만들지 말고, sql과 같이 "create table" 하면 된다. 나 같은 경우, 다이나믹 테이블 생성 방식으로 파일 구조를 파악해, 자동으로 테이블을 생성하는 방식이다. 

CREATE TABLE IF NOT EXISTS V112_TABLE
                USING TEMPLATE (
                SELECT ARRAY_AGG(OBJECT_CONSTRUCT(*))
                    FROM TABLE(
                    INFER_SCHEMA(
                        LOCATION=>'@AWS_S3',
                        FILE_FORMAT=>'PARQUT_SNAPPY'
                    )
            ));

 

 

8. 그리고 테이블에 stage에 저장된 데이터를 복사해준다. 

데이터 복사중

 

COPY INTO V112_TABLE
FROM @AWS_S3 FILE_FORMAT = (FORMAT_NAME= 'PARQUT_SNAPPY') MATCH_BY_COLUMN_NAME=CASE_INSENSITIVE;

 

 

9. SQL 실행 

728x90
SELECT *
FROM V112_TABLE
LIMIT 10;

 

 

이렇게 하면, SNOWFLAKE에서 데이터가 조회된다. 해보면 별거없지만, 처음하면 생각보다 버벅거린다. 그래서 정리 했다. 성능적인 측면에서 AWS 서비스들보다 확실히 빠른거 같다.

 

하지만, 클라우드를 사용하는 사람 입장에서는 Snowflake 가 들어가면, 최소 2개의 멀티 클라우드를 사용해야 한다. 그래서 관리포인트가 늘어난다. 

 

비용은 아직 계산해 보지 않아서 잘 모르겠다. 나중에 한번 계산해서 글을 올리겠다. 

 

 

반응형