3 Wed
TIL
Last updated
Was this helpful?
TIL
Last updated
Was this helpful?
๋ฐฐ์์ ์ ํ์ ์ธ ํจํด
๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋ฒํฐ๋ ํ => ์ฆ๊ธธ์ค ์๊ธฐ
๋งํ์ ๋ ๋ด๊ฐ ๋ญ ๋ชจ๋ฅด๋์ง ์๊ฐํด๋ด์ผ ํจ
์ํ๋ ์ฌ๋๋ณด๊ณ ๊ธฐ์ฃฝ์ง ์๊ธฐ => ๊ทธ๋ค์ด ๋จผ์ ์์ํ๋ค๊ณ ์๊ฐํ๊ณ ๋ ์ด๊ฒ์ด ์ฌ์ค์ด๋ค
์๋ก์ด ๊ฒ์ ์ฒ์ ๋ฐฐ์ธ ๋์ ์ข์ ์์ธ
์์ ์ด ์๋ ๊ฒ๊ณผ ๋ชจ๋ฅด๋ ๊ฒ์ ๋ถ๋ช ํ ์ดํด
๋ฉ์ฒญํ ์ง๋ฌธ์ ์์
๋ง์์ ํธํ๊ฒ ๋จน๊ธฐ
๋ด๊ฐ ์ดํดํ๊ธฐ ํ๋ค๋ฉด ๋จ๋ค๋ ํ๋ฆ
๋๋ณด๋ค ๋ ์ํ๋ ์ฌ๋์ ๋๋ํ๊ธฐ ๋ณด๋ค๋ ๋ ๋ ธ๋ ฅํ๊ธฐ ๋๋ฌธ
๋ฐฐ์์ ๋ฐ์ ์ Tipping point๋ฅผ ๊ฑฐ์น๋ฉด์ ํญ๋ฐํ๋ ํํ
๋ฐ์ ์ด ๋๋ ๊ธฐ๊ฐ์ ์ฆ๊ฒจ์ผ ์ด๋ฌํ ์ ์ฒด๊ธฐ ๋ค์ ํญ๋ฐ์ ์ธ ๋ฐ์ ์ ์๊ธฐ๊ฐ ๋ค๊ฐ์จ๋ค
๋น ๋ฐ์ดํฐ์์ ์ค์ํ SQL
๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ๊ฑฐ๋ฉด SQL์ ๋์์์ด ์ค์
๋ชจ๋ ๋์ฉ๋ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋ SQL ๊ธฐ๋ฐ
Spark๋ ์์ธ๋ ์๋
SparkSQL
๋ฐ์ดํฐ ๋ถ์ผ์์ ์ผํ๊ณ ์ ํ๋ฉด ๋ฐ๋์ ์ตํ์ผํ ๊ธฐ๋ณธ ๊ธฐ์
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
๋ํ์ ์ธ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค
MySQL, Postgres, Oracle
Redshift, Snowflake
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ 2๋จ๊ณ๋ก ๊ตฌ์ฑ๋จ
๊ฐ์ฅ ๋ฐ๋จ์๋ ํ ์ด๋ธ๋ค์ด ์กด์ฌ. ํ ์ด๋ธ์ ์์ ์ ์ํธ์ ํด๋น
ํ ์ด๋ธ๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ผ๋ ํด๋ ๋ฐ์ผ๋ก ๊ตฌ์ฑ
ํ ์ด๋ธ์ ๊ตฌ์กฐ. ์คํค๋ง๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค.
ํ ์ด๋ธ์ ๋ ์ฝ๋๋ค๋ก ๊ตฌ์ฑ
๋ ์ฝ๋๋ ํ๋ ์ด์์ ํ๋๋ก ๊ตฌ์ฑ
ํ๋๋ ์ด๋ฆ๊ณผ ํ์ ์ผ๋ก ๊ตฌ์ฑ๋จ
์์ 1 - ์น์๋น์ค ์ฌ์ฉ์/์ธ์ ์ ๋ณด
์ฌ์ฉ์ ID
๋ณดํต ์น์๋น์ค์์๋ ๋ฑ๋ก๋ ์ฌ์ฉ์๋ง๋ค ์ ์ผํ ID๋ฅผ ๋ถ์ฌํ๋ค
์ธ์ ID
์ฌ์ฉ์๊ฐ ์ธ๋ถ ๋งํฌ(๋ณดํต ๊ด๊ณ )๋ฅผ ํ๊ณ ์ค๊ฑฐ๋ ์ง์ ๋ฐฉ๋ฌธํด์ ์ฌ ๊ฒฝ์ฐ ์ธ์ ์ ์์ฑ
์ฆ ํ๋์ ์ฌ์ฉ์ ID๋ ์ฌ๋ฌ ์ธ์ ID๋ฅผ ๊ฐ์ง ์ ์์
๋ณดํต ์ธ์ ์ ๊ฒฝ์ฐ ์ธ์ ์ ๋ง๋ค์ด๋ธ ์์ค๋ฅผ ์ฑ๋์ด๋ ์ด๋ฆ์ผ๋ก ๊ธฐ๋ก
๋ง์ผํ ๊ด๋ จ ๊ธฐ์ฌ๋ ๋ถ์์ ์ํจ
์ธ์ ์์ฑ ์๊ฐ๋ ๊ธฐ๋ก
์ด ์ ๋ณด๋ค์ ๋ฐํ์ผ๋ก ๋ค์ํ ๋ฐ์ดํฐ ๋ถ์๊ณผ ์งํ ์ค์ ์ด ๊ฐ๋ฅ
๋ง์ผ๋ฉ ๊ด๋ จ
์ฌ์ฉ์ ํธ๋ํฝ ๊ด๋ จ
EX)
์ฌ์ฉ์ ID 100๋ฒ : ์ด 3๊ฐ์ ์ธ์ (ํ๋ ๋ฐฐ๊ฒฝ)์ ๊ฐ๋ ์์
์ธ์ 1 : ๊ตฌ๊ธ ํค์๋ ๊ด๊ณ ๋ก ์์ํ ์ธ์
์ธ์ 2 : ํ์ด์ค๋ถ ๊ด๊ณ ๋ฅผ ํตํด ์๊ธด ์ธ์ => ๋ฆฌํ๊ฒํ ๊ด๊ณ
์ธ์ 3 : ๋ค์ด๋ฒ ๊ด๊ณ ๋ฅผ ํตํด ์๊ธด ์ธ์
SQL ์๊ฐ
SQL : Structured Query Language
๋ ์ข ๋ฅ์ ์ธ์ด๋ก ๊ตฌ์ฑ๋จ
DDL (Data Definition Language) : ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ์ธ์ด
DML (Data Manipulation Language) : ํ ์ด๋ธ์ ๋ ์ฝ๋๋ฅผ ์ถ๊ฐ,์ญ์ ,๊ฐฑ์ ํ ๋ ์ฌ์ฉํ๋ ์ธ์ด
DDL
CREATE TABLE
DROP TABLE
ALTER TABLE
DML
SELECT ํ๋ ์ด๋ฆ
FROM ํ ์ด๋ธ ์ด๋ฆ
WHERE ์ ํ์กฐ๊ฑด
ORDER BY ์ ๋ ฌ
LIMIT N (N๊ฐ๋ง)
EX
SELECT * FROM raw LIMIT 10;
์ฒ์ ๋ ์ฝ๋ 10๊ฐ์ ๋ํด์ ๋ชจ๋ ํ๋๋ฅผ ๋ฆฌํด
SELECT COUNT(1) FROM raw
์ด ํ ์ด๋ธ์ ์๋ ๋ชจ๋ ๋ ์ฝ๋์ ์๋ฅผ ๋ฆฌํด
SELECT COUNT(1) FROM raw WHERE channel = 'Facebook'
channel์ด Facebook์ธ ๋ชจ๋ ๋ ์ฝ๋์ ์๋ฅผ ๋ฆฌํด
SparkSQL
๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ Spark ๋ชจ๋
๋ํํ Spark ์ ธ์ด ์ ๊ณต๋จ
ํ๋ก ์์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ Hive ์ฟผ๋ฆฌ์ ๊ฒฝ์ฐ ๋ณ๊ฒฝ์์ด ์ต๋
๋ฐ์ดํฐ ํ๋ ์์ SQL๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅ
SparkSQL ์ฌ์ฉ๋ฒ
์ธ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ ํ๋ ์ ์์ฑ
Redshift ์ฐ๊ฒฐ
SparkSession์ ๋ง๋ค ๋ ์ธ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ง๋ JDBC jar๋ฅผ ์ง์
SparkSession์ read ํจ์๋ฅผ ํธ์ถ
๋ก๊ทธ์ธ ๊ด๋ จ ์ ๋ณด์ ์ฝ์ด์ค๊ณ ์ ํ๋ ํ ์ด๋ธ ๋๋ SQL์ ์ง์
๊ฒฐ๊ณผ๊ฐ ๋ฐ์ดํฐ ํ๋ ์์ผ๋ก ๋ฆฌํด๋จ
์์ ๋ฆฌํด๋ ๋ฐ์ดํฐํ๋ ์์ ํ ์ด๋ธ ์ด๋ฆ ์ง์
SparkSession์ sql ํจ์๋ฅผ ์ฌ์ฉ