728x90
๋ฐ์ํ
ํ ์ค ์ ์
๐ **Spark๋ “๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ถ์ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ง”**์ด์ผ.
์กฐ๊ธ ํ์ด์ ๋งํ๋ฉด
- ํ ๋ ์ปดํจํฐ๋ก๋ ๋๋ฆฐ ์์ ์
- ์ฌ๋ฌ ๋ ์ปดํจํฐ(CPU, ๋ฉ๋ชจ๋ฆฌ)๋ฅผ ๋์์ ์จ์
- ํ ๋ฒ์ ์ฒ๋ฆฌํด์ฃผ๋ ์์คํ
๐ ๊ทธ๊ฒ ๋ฐ๋ก Apache Spark
Spark๋ ๋ญ ์ํ๋?
โ๏ธ ์ํ๋ ๊ฒ
- ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ (GB~TB~PB)
- ๋ก๊ทธ ๋ถ์
- ETL ํ์ดํ๋ผ์ธ
- ์ง๊ณ / ํต๊ณ
- ๋จธ์ ๋ฌ๋ ์ ์ฒ๋ฆฌ
โ ์ ๋ง๋ ๊ฒ
- ์๋ ๋ฐ์ดํฐ
- ์ค์๊ฐ ์ด์ ์ง์ฐ ํธ๋์ญ์ (OLTP)
Spark vs ๋จ์ผ ์๋ฒ (์ฐจ์ด ๊ฐ๊ฐ)
โ ์ผ๋ฐ Python
ํ ์ค๋ก ํ ์ค ์ฒ๋ฆฌ
CPU 1๊ฐ
๋ฉ๋ชจ๋ฆฌ ํ๊ณ
โ Spark
๋ฐ์ดํฐ๋ฅผ ์ชผ๊ฐ์
์ฌ๋ฌ CPU / ์ฌ๋ฌ ์๋ฒ์์
๋์์ ์ฒ๋ฆฌ
Spark์ ํต์ฌ ํน์ง 4๊ฐ์ง
1๏ธโฃ ๋ถ์ฐ ์ฒ๋ฆฌ
- ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์กฐ๊ฐ(partition)์ผ๋ก ๋๋
- ๋์์ ์ฒ๋ฆฌ → ๋น ๋ฆ
2๏ธโฃ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ์ฒ๋ฆฌ
- ๋์คํฌ๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ ์์ฃผ
- Hadoop MapReduce๋ณด๋ค ํจ์ฌ ๋น ๋ฆ
3๏ธโฃ Lazy Evaluation (์ง์ฐ ์คํ)
- ์ฝ๋ ์ด๋ค๊ณ ๋ฐ๋ก ์คํ โ
- show(), count(), write() ๊ฐ์ action์์ ์คํ
๐ ์ต์ ํํ ์๊ฐ์ Spark๊ฐ ๊ฐ์ง
4๏ธโฃ ๋ค์ํ API ์ ๊ณต
- DataFrame / SQL
- Python, Scala, SQL ์ง์
Spark์์ ์ฐ๋ฆฌ๊ฐ ์ฃผ๋ก ์ฐ๋ ๊ฒ
๐ DataFrame
df.select().filter().groupBy()
๐ SQL ํ ์ด๋ธ์ฒ๋ผ ์ฐ๋ ๊ตฌ์กฐ
Spark ๊ตฌ์ฑ์์ (์์ฃผ ๊ฐ๋จํ)
Driver : ์ ์ฒด ์์
์งํ
Executor : ์ค์ ์ฐ์ฐ ์ํ
- Driver๊ฐ ๊ณํ ์ธ์
- Executor๋ค์ด ์ค์ ๊ณ์ฐ
Spark๋ ์ด๋์ ์ฐ์ด๋?
- AWS EMR
- GCP Dataproc
- Databricks
- ์จํ๋ ๋ฏธ์ค ํด๋ฌ์คํฐ
๐ ๋ฐ์ดํฐ ์์ง๋์ด ํ์ ๋๊ตฌ
ํ ๋ฌธ์ฅ ์์ฝ (๋ฉด์ ์ฉ โจ)
“Spark๋ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ ํ๊ฒฝ์์ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ผ๋ก ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ง์ ๋๋ค.”
์ง์ง ํต์ฌ๋ง ๋ค์
- Spark = ๋ถ์ฐ ์ฒ๋ฆฌ
- ๋น ๋ฅธ ์ด์ = ๋ณ๋ ฌ + ๋ฉ๋ชจ๋ฆฌ
- ํต์ฌ API = DataFrame
- ๋๋ฆด ๋ ์์ธ = Shuffle
728x90
๋ฐ์ํ
'DataEngineering > Spark' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Spark ์ต์ ํ ์ฒดํฌ๋ฆฌ์คํธ (0) | 2026.01.30 |
|---|---|
| Suffle์ด๋? (1) | 2026.01.30 |
| df.cache() ๋ฅผ ์ธ์ ์จ์ผํ๋? (0) | 2026.01.30 |
| Dataframe ์ด๋? (0) | 2026.01.30 |
| Lazy Evaluation ์ด๋? (0) | 2026.01.30 |