์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- topic
- ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ
- colab
- spark executor memory
- Kafka
- Speculative Execution
- aws
- SQL
- backfill
- redshift
- KDT_TIL
- Kubernetes
- Spark Caching
- Spark ์ค์ต
- DataFrame Hint
- Spark
- disk spill
- Spark SQL
- AQE
- etl
- k8s
- ๋น ๋ฐ์ดํฐ
- Docker
- Dag
- mysql
- Airflow
- Spark Partitioning
- Salting
- off heap memory
- CI/CD
- Today
- Total
JUST DO IT!
Redshift serverless ์์ฑํ๊ณ S3์ csv ํ์ผ Redshift์ COPYํ๊ธฐ - TIL230523 ๋ณธ๋ฌธ
Redshift serverless ์์ฑํ๊ณ S3์ csv ํ์ผ Redshift์ COPYํ๊ธฐ - TIL230523
sunhokimDev 2023. 5. 23. 17:03๐ KDT WEEK 8 DAY 2 TIL
- Redshift ์์๋ณด๊ธฐ
- Redshift Severless ์์ฑ ์ค์ต
- Redshift COPY ์ค์ต
๐ฅ Redshift
AWS์์ ์ง์ํ๋ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค ์๋น์ค
- ์ต์ 160GB ~ 2PB๊น์ง ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ์๋ต์๋๊ฐ ๋น ๋ฅด์ง ์์ ํ๋ก๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ ๋ถ์ ํฉ
- ๋ ์ฝ๋ ๋ณ๋ก ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ ์ปฌ๋ผ๋ณ๋ก ์ ์ฅํจ
- ์ปฌ๋ผ๋ณ ์์ถ์ด ๊ฐ๋ฅํ๋ฉฐ ์ปฌ๋ผ์ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๋ ๊ฒ์ด ๋น ๋ฅด๋ค
- ๋ฒํฌ ์ ๋ฐ์ดํธ(S3์์ ๋ ์ฝ๋ํ์ผ์ ์ผ๊ด๋ณต์ฌ ๊ฐ๋ฅ) ์ง์ - COPY SQL
- ๊ณ ์ ์ฉ๋/๋น์ฉ ์์ง, ๊ฐ๋ณ ๋น์ฉ ์ต์ (Redshift Serverless)๋ ์ง์
- ๋ฐ์ดํฐ ๊ณต์ ๊ธฐ๋ฅ(Datashare)์ผ๋ก ๋ค๋ฅธ AWS ๊ณ์ ๊ณผ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ๋ฅ
- ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ด๋ฏ๋ก Primary Key Uniqueness๋ฅผ ๋ณด์ฅํ์ง ์๋๋ค.
- SQL ๊ธฐ๋ฐ
Redshift์ ์ค์ผ์ผ๋ง ๋ฐฉ์
์ฉ๋์ด ๋ถ์กฑํด์ง ๋๋ง๋ค ์๋ก์ด ๋ ธ๋๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์
ex) dc2.large๋ฅผ ์ฌ์ฉ์ค์ผ ๋
- Scale Out : dc2.large๋ฅผ ํ๋ ๋ ์ถ๊ฐ
- Scale Up : dc2.8xlarge๋ก ์ ๊ทธ๋ ์ด๋
- Auto Scaling : Dense Compute, Managed Storage ์ต์ ์์๋ง ์ ๊ณต, ์๋์ผ๋ก ์ ๊ทธ๋ ์ด๋
Redshift ์ต์ ํ๊ฐ ๋ณต์กํ๋ค.
๊ณ ์ ๋น์ฉ ์ต์ , ๋ ๋์ด์์ ๋ ธ๋๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๋ ์ฝ๋์ ๋ถ์ฐ ์ ์ฅ ์ด์๊ฐ ๋ฐ์ํ ์ ์๋ค.
Snowflake์ BigQuery์ ๊ฒฝ์ฐ ์์์ ์ต์ ํ ์ฒ๋ฆฌ๋ฅผ ํด์ค๋ค.
* ํ ํ ์ด๋ธ์ ๋ ์ฝ๋๋ค์ ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก ๋ค์์ ๋ ธ๋์ ๋ถ๋ฐฐํ ์ง ์ ํ๋ ์ต์ ๋ค *
- Diststyle
- All : ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ๋ชจ๋ ๋ ธ๋์ ๋์ผํ๊ฒ ๋ฃ๋๋ค.
- Even : ๋ ์ฝ๋์ ํ๋์ฉ ๋์๊ฐ๋ฉด์ ๋ชจ๋ ๋
ธ๋์ ๋ถ๋ฐฐํ๋ค.
- ๋ฐ์ดํฐ ์ ํ๋ง ๋ฌธ์
- Key : ํน์ ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ๋
ธ๋์ ๋ถ๋ฐฐํ๋ ๋ฐฉ์
- JOIN์ด๋ GROUP BY๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ KEY๋ฅผ ์ง์ ํ๋ ๊ฒ์ด ํจ์จ์ ์ด๋ค.
- ํ์ง๋ง Data Skewed(๋น๋์นญ) ๋ฌธ์ ๊ฐ ๋ํ๋๋ฉด ๋ถ์ฐ ์ ์ฅ์ ํจ์จ์ด ๋จ์ด์ง ์ ์๋ค.
- ๋ฐ๋ผ์, ํน์ KEY์ ๋ ์ฝ๋ ๊ฐ์ด ๋ง์ ๊ฒฝ์ฐ์๋ ๋นํจ์จ์ ์ด๋ค.
- Distkey : ์ด๋ค ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ๋ฐฐํฌ๋๋์ง ๋ํ๋ธ๋ค.
- Diststyle์ด Key์ธ ๊ฒฝ์ฐ์๋ง ํด๋นํ๋ค
- Sortkey : ๋ ์ฝ๋๊ฐ ํ ๋
ธ๋ ๋ด์์ ์ด๋ค ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋๋์ง ๋ํ๋ธ๋ค.
- ๋ณดํต ํ์์คํฌํ ํ๋๊ฐ ํด๋น๋๋ค.
ex)
CREATE TABLE my_table(
column1 INT,
column2 VARCHAR(50),
column3 TIMESTAMP,
column4 DECIMAL(18,2)
) DISTSTYLE KEY DISTKEY(column1) SORTKEY(column3);
๐ฆ Redshift Serverless ์ค์ต
์๋ง์กด์์ ๊ณ์ ์ ์์ฑํ๊ณ Redshift๋ฅผ ๊ฒ์ํ์ฌ ์ ์ํ๋ค.
ํ์ต ์ค์ต์ฉ์ด๋ฏ๋ก ๋ ์ ์ ๋น์ฉ์ด ๋๊ฐ๋ ๋ฆฌ์ (์ค๋ ๊ณค)์ ์ ํํ์ฌ ์ค์ตํ์๋ค.
์์ฑ๋ฒํผ์ ๋๋ฅธ ๋ค, ๋ณ๋ค๋ฅธ ์ค์ ์์ด ๊ตฌ์ฑ ์ ์ฅ๋ฒํผ์ ๋๋ฌ ์์ฑ์ ์์ํ๋ค.
์์ฑ์ด ์๋ฃ๋๋ฉด, ๋ค์์คํ์ด์ค ๊ตฌ์ฑ > default ์์ ์๋ก์ด admin ์ ์ ๋ฅผ ์์ฑํด๋ณด์.
๊ด๋ฆฌ์ ์ฌ์ฉ์ ์ํธ ๋ณ๊ฒฝ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ Redshift์ ์ ์ํ๊ธฐ ์ํ ์๋ ํฌ์ธํธ๋ฅผ ๊ฐ์ ธ์์ผ ํ๋ค.
admin ์ ์ ์ ๋ณด์ ์๋ํฌ์ธํธ๊ฐ ์๋ค๋ฉด ์ด์ Redshift์ ์ ์ํด๋ณด์.
Google Colab์์ ์ ์ํ๋ ค๋ฉด Redshift ํผ๋ธ๋ฆญ ์ก์ธ์ค ํ์ฑ๊ณผ VPC ํฌํธ์ค์ ์ด ํ์ํ๋ค.
1. ํผ๋ธ๋ฆญ ์ก์ธ์ค ์ค์
2. VPC ๋ณด์ ๊ทธ๋ฃน์ Redshift ํฌํธ ์ถ๊ฐํ๊ธฐ
์๊น ํผ๋ธ๋ฆญ ์ก์ธ์ค ์ค์ ์ ๋ณธ ์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง ํ๋ฉด์์, VPC ๋ณด์ ๊ทธ๋ฃน์ ์ ํํด์ ๋ค์ด์ค๋ฉด ์๋์ฒ๋ผ ๋ณด์ธ๋ค.
์ด๋ก์จ Redshift๋ฅผ ํตํด ๋ค์ด์ค๋ ํธ๋ํฝ์ ๋ํด์๋ ํ์ฉํ๋๋ก ์ค์ ํ๋ค.
Google Colab์ ํตํด Redshift ์ ์ํ๊ธฐ
์ ์ํ ๋๋ postgresql://admin:password@์๋ํฌ์ธํธ ํํ๋ก ์ ์ํ๋ฉด ๋๋ค.
์ ์์ ์ฑ๊ณตํ๊ฒ ๋๋ค๋ฉด ์๋ฌด๋ฐ ๋ฌธ์ ์์ด ๊ตฌ๋ฌธ์ด ์คํ๋๋ค.
๐ง Redshift ์ด๊ธฐ ์ค์
1. Schema
์ฌ์ฉ ๋ชฉ์ ์ ๋ง๊ฒ Redshift schema(ํด๋)๋ฅผ ์์ฑํ์ฌ ํ ์ด๋ธ์ ์ ์ฅํ๋ค.
CREATE SCHEMA raw_data; -- ETL ๊ฒฐ๊ณผ ๋ฐ์ดํฐ์ฉ
CREATE SCHEMA analytics; -- ELT ๊ฒฐ๊ณผ ๋ฐ์ดํฐ์ฉ
SELECT * FROM pg_namespace; -- ๋ชจ๋ ์คํค๋ง ๋ฆฌ์คํธํ๊ธฐ
2. User
CREATE USER user1 PASSWORD 'password'; -- ์๋ก์ด ์ ์ ์์ฑํ๊ธฐ
SELECT * FROM pg_user; -- ๋ชจ๋ ์ ์ ๋ฆฌ์คํธํ๊ธฐ
3. GROUP
๊ถํ์ ์ฌ์ฉ์๋ง๋ค ๋ถ์ฌํ์ง ์๊ณ , ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ํจ์จ์ ์ผ๋ก ๋ถ์ฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
ํ ์ฌ์ฉ์๋ ๋ค์์ ๊ทธ๋ฃน์ ์ํ ์ ์๋ค.
CREATE GROUP ๊ทธ๋ฃน์ด๋ฆ; -- ๊ทธ๋ฃน์์ฑ
ALTER GROUP ๊ทธ๋ฃน์ด๋ฆ ADD USER ์ฌ์ฉ์์ด๋ฆ; -- ๊ทธ๋ฃน์ ์ ์ ๋ฃ๊ธฐ
SELECT * FROM pg_group; -- ๋ชจ๋ ๊ทธ๋ฃน ๋ฆฌ์คํธํ๊ธฐ
4. ROLE
๊ทธ๋ฃน์ฒ๋ผ ์ฌ์ฉ์์๊ฒ ๊ถํ์ ๋ถ์ฌํ๋๋ฐ ์ฌ์ฉ๋๋ค.
ํ์ง๋ง ๊ทธ๋ฃน๊ณผ ๋ฌ๋ฆฌ ์ญํ ์ ๋ค๋ฅธ ์ญํ ์ ๊ณ์นํ ์ ์๋ ๊ตฌ์กฐ๋ก ์ฌ์ฉํ ์ ์๋ค.
์ญํ ์ ์ฌ์ฉ์์๊ฒ ๋ถ์ฌ๋ ์๋ ์๊ณ , ๋ค๋ฅธ ์ญํ ์ ๋ถ์ฌ๋ ์๋ ์๋ค.
ํ ์ฌ์ฉ์๋ ๋ค์์ ์ญํ ์ ์์ ๊ฐ๋ฅํ๋ค.
CREATE ROLE ์ญํ ์ด๋ฆ; -- ์๋ก์ด ์ญํ ์์ฑ
GRANT ROLE ์ญํ ์ด๋ฆ TO ์ ์ ์ด๋ฆ; -- ๊ธฐ์กด ์ญํ ์ ์ ์ ๋ฃ๊ธฐ
GRANT ROLE ์ญํ ์ด๋ฆ1 TO ROLE ์ญํ ์ด๋ฆ2; -- ๊ธฐ์กด ์ญํ 1์ ์๋ก์ด ์ญํ 2์ ๋ชจ๋ ๊ถํ ๊ณ์น
SELECT * FROM SVV_ROLES; -- ๋ชจ๋ ์ญํ ๋ฆฌ์คํธํ๊ธฐ
Colab ์ค์ต
์ง์ ๋ง๋ ์คํค๋ง ์ธ์๋ ๊ธฐ๋ณธ์ ์ธ ์คํค๋ง๋ค์ด ์ฌ๋ฌ ๊ฐ ๋ํ๋ฌ๋ค.
์ ์ ๋ํ ์์ฑํ๋ user1๊ณผ admin ๋ง๊ณ ๋ ๋ค๋ฅธ ์ ์ ๋ฅผ ํ์ธํ ์ ์๋ค.
๐ฉ Redshift ๋ฒํฌ์ ์ ๋ฐ์ดํธ + ์ค์ต
์๋์ ๊ฐ์ ์ฌ์ ์์ ์ด ํ์ํ๋ค.
- ์์์ ์คํค๋ง ๋ฐ์ผ๋ก ์๋ก์ด ํ ์ด๋ธ ๋ช ๊ฐ๋ฅผ ๋ง๋ ๋ค.
- ์ ๋ ฅ์ด ๋ csv ํ์ผ๋ค์ ๋ง๋ค๊ณ S3 ๋ฒํท์ ์ ๋ก๋ํ๋ค.
- Redshift๊ฐ S3 ๋ฒํท์ ์ ๊ทผํ ์ ์๋๋ก ๊ถํ ์ค์ ํด์ฃผ๊ธฐ โถ AWS IAM ํ์ฉ
IAM์ ํตํด ์๋ก์ด s3 ์ ๊ทผ ์ญํ ์์ฑํ๊ธฐ
1. IAM ์ญํ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ์ฌ Redshift -Customizable ์ต์ ์ผ๋ก ํ๋ ์์ฑํ๋ค.
2. ๋ค์๋ฒํผ์ ๋๋ฅด๊ณ S3์ ๊ดํ ๊ถํ์ ์ฐ๊ฒฐํ๋ฉด ๋๋ค.
Redshift์ ์ญํ ๋ถ์ฌ
IAM์ผ๋ก ์์ฑํ ์ญํ ์ Redshift์ ๋ถ์ฌํด๋ณด์.
์ญํ ์ ๋ถ์ฌํ Redshift ํด๋ฌ์คํฐ์ ํด๋น ๋ค์์คํ์ด์ค์ ๋ค์ด๊ฐ์ ์ค์ ํ๋ฉด ๋๋ค.
COPY ์ค์ตํด๋ณด๊ธฐ
S3 ๋ฒํท์ csv ํ์ผ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ณผ์ ์ ์๋ตํ๊ณ , (๋งค์ฐ ์ง๊ด์ ์ด๋ฏ๋ก)
๋ฐ๋ก Colab์์ Redshift์ ์ฐ๊ฒฐ๋์ด์๋ ์ํ์์ ํ ์ด๋ธ์ ๋ง๋ค๊ณ , COPY ์ปค๋งจ๋๋ฅผ ์จ๋ณด์๋ค.
ํ ์ด๋ธ์ ์๋ก ๋ง๋ค์ด์ S3๋ก ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ , ํ์ธํ๋ ์์ ์ด๋ค.
์ฌ๊ธฐ์ COPY ์ปค๋งจ๋๋ฅผ ์ค๋ช ํ์๋ฉด,
- COPY ~ : ์ด๋ค ํ ์ด๋ธ์ ๋ฃ์์ง ๋ช ์ํ๋ค.
- FROM ~ : ์ด๋์์ ๊ฐ์ ธ์ฌ์ง ์ ๋๋ฐ, ๋๋ S3 ๋ฒํท > test-data ํด๋ > ํด๋น csv ํ์ผ ์ ๋ฃ์๋ค.
- credentials ~ : Redshift๋ฟ๋ง์๋๋ผ ์ฌ๊ธฐ์๋ S3 ์ ์ด ์ญํ ์ ๋ฃ์ด์ฃผ์ด์ผํ๋ค.
- aws_iam_role = ๋ค์์ผ๋ก ํด๋น ์ญํ ์ ARN ๊ฐ์ ๋ฃ์ผ๋ฉด ๋๋ค. ARN ๊ฐ์ ์ญํ ์ ๋ณด์ ์ ํ์๋ค.
- delimiter ',' : ๋ฐ์ดํฐ๊ฐ ์ด๋ค ๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌ๋์ด ์ ์ฅ๋์๋์ง ์ ๋๋ฐ, CSV์ด๋ฏ๋ก ,(์ฝค๋ง) ์ด๋ค.
- dateforamt 'auto' timeforamt 'auto' : ํด๋น ํฌ๋งท์ ์๋์ผ๋ก ์์์ ์ธ์ํ๊ณ ๊ฐ์ ธ์จ๋ค.
- IGNOREHEADER 1 : CSV ํ์ผ์ ์ฒซ ๋ฒ์งธ ํ์ ์ปฌ๋ผ๋ช ์ด๋ฏ๋ก ์ด ๊ตฌ๋ฌธ์ผ๋ก์จ ์ ์ธํ ์ ์๋ค.
- removequotes : ๋ฐ์ดํฐ์ ๋ฐ์ดํ๋ฅผ ์ ๊ฑฐํ๊ณ ๊ฐ์ ธ์จ๋ค.
COPY SQL ๋ฌธ๋ฒ ์ฐธ๊ณ ๋ ํผ๋ฐ์ค : https://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html
+++ COPY ๋ช ๋ น ์คํ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ฉด, ๊ฐ์ฅ ์ต๊ทผ์ ์์ฑ๋ ์๋ฌ ํ์ธํ๋ ๋ช ๋ น์ด
SELECT * FROM stl_load_errors ORDER starttime DESC;
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Snowflake ์์๋ณด๊ณ , S3์์ COPYํด๋ณด๊ธฐ - TIL230525 (0) | 2023.05.25 |
---|---|
Redshift ๊ณ ๊ธ ๊ธฐ๋ฅ -TIL230524 (1) | 2023.05.24 |
๋ฐ์ดํฐ ํ๊ณผ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค - TIL230522 (2) | 2023.05.22 |
Docker์ Docker File - TIL230519 (0) | 2023.05.19 |
AWS CLI - TIL230518 (0) | 2023.05.19 |