ํ ์ค ๋ต
๐ ๊ฐ์ DataFrame์ “์ฌ๋ฌ ๋ฒ ๋ค์ ์ธ ๋”๋ง cache ํ๋ค.

์ cache๊ฐ ํ์ํ๋๋ฉด
Spark๋ lazy evaluation์ด๋ผ์
DataFrame์ ์ธ ๋๋ง๋ค ์ฒ์๋ถํฐ ๋ค์ ๊ณ์ฐํด.
CSV → filter → join → groupBy
์ด๊ฑธ
- count()
- show()
- write()
์ฒ๋ผ ์ฌ๋ฌ ๋ฒ ํธ์ถํ๋ฉด
๐ ๋งค๋ฒ ๋ค์ CSV๋ถํฐ ์ฝ์ ๐ฑ
๊ทธ๋์ ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ ๊ฒ cache().
โ cache ์จ์ผ ํ๋ ๊ฒฝ์ฐ
1๏ธโฃ ๊ฐ์ df๋ฅผ ์ฌ๋ฌ ์ก์ ์์ ์ฌ์ฉ
df2 = df.filter(...)
df2.count()
df2.write.parquet(...)
๐ df2.cache() ๐
2๏ธโฃ ๋น์ผ ์ฐ์ฐ ๋ค์ ์ค๊ฐ ๊ฒฐ๊ณผ
- ํฐ join
- aggregation
- UDF ์ ์ฉ ํ
๐ ๋ค์ ๊ณ์ฐํ๊ธฐ ์ซ์ ๋
3๏ธโฃ ๋ฐ๋ณต ์์ / ํ์ ๋ถ์
- EDA
- ๋๋ฒ๊น
- ์ฌ๋ฌ ํต๊ณ๊ฐ ํ์ธ
โ cache ์ฐ๋ฉด ์ ๋๋ ๊ฒฝ์ฐ
1๏ธโฃ ํ ๋ฒ๋ง ์ฐ๋ df
df.filter(...).write.parquet(...)
๐ cache โ (์๋ฏธ ์์)
2๏ธโฃ df๊ฐ ๋๋ฌด ํผ
- ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ → spill → ์คํ๋ ค ๋๋ฆผ
3๏ธโฃ ๋ฐ๋ก write๋ง ํ๋ ๊ฒฝ์ฐ
- write๋ ์ด์ฐจํผ ํ ๋ฒ ์ก์
cache vs persist ์ฐจ์ด
- cache() = ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ณธ
- persist() = ์ ์ฅ ๋ฐฉ์ ์ ํ
df.persist(StorageLevel.MEMORY_AND_DISK)
๐ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋๋นํ ๋
์ค๋ฌด์์ ์์ฃผ ์ฐ๋ ํจํด
df_clean = (
df_raw
.filter(...)
.join(...)
)
df_clean.cache()
df_clean.count()
df_clean.write.parquet(...)
๊ทธ๋ฆฌ๊ณ ๋๋๋ฉด ๐
df_clean.unpersist()
Spark UI๋ก ํ์ธํ๋ ๋ฒ
- Storage ํญ
- Cached RDDs / DataFrames
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ํ์ธ
๐ cache ํ์ผ๋ฉด ๊ผญ ํ์ธ
๋ฉด์ ์ฉ ํ ๋ฌธ์ฅ
“Spark์์ df.cache()๋
๋์ผํ DataFrame์ ์ฌ๋ฌ ์ก์ ์์ ์ฌ์ฌ์ฉํ ๋
์ค๋ณต ๊ณ์ฐ์ ํผํ๊ธฐ ์ํด ์ฌ์ฉํ๋ฉฐ,
ํ ๋ฒ๋ง ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ์ฌ์ฉํ์ง ์์ต๋๋ค.”
๋ง์ง๋ง ํต์ฌ ๋ฌธ์ฅ
๐ cache๋ ‘์ฌ์ฌ์ฉํ ๋๋ง’ ์จ๋ผ.
ํ ์ค ๋ต
๐ ๊ฐ์ DataFrame์ “์ฌ๋ฌ ๋ฒ ๋ค์ ์ธ ๋”๋ง cache ํ๋ค.

์ cache๊ฐ ํ์ํ๋๋ฉด
Spark๋ lazy evaluation์ด๋ผ์
DataFrame์ ์ธ ๋๋ง๋ค ์ฒ์๋ถํฐ ๋ค์ ๊ณ์ฐํด.
CSV → filter → join → groupBy
์ด๊ฑธ
- count()
- show()
- write()
์ฒ๋ผ ์ฌ๋ฌ ๋ฒ ํธ์ถํ๋ฉด
๐ ๋งค๋ฒ ๋ค์ CSV๋ถํฐ ์ฝ์ ๐ฑ
๊ทธ๋์ ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ ๊ฒ cache().
โ cache ์จ์ผ ํ๋ ๊ฒฝ์ฐ
1๏ธโฃ ๊ฐ์ df๋ฅผ ์ฌ๋ฌ ์ก์ ์์ ์ฌ์ฉ
df2 = df.filter(...)
df2.count()
df2.write.parquet(...)
๐ df2.cache() ๐
2๏ธโฃ ๋น์ผ ์ฐ์ฐ ๋ค์ ์ค๊ฐ ๊ฒฐ๊ณผ
- ํฐ join
- aggregation
- UDF ์ ์ฉ ํ
๐ ๋ค์ ๊ณ์ฐํ๊ธฐ ์ซ์ ๋
3๏ธโฃ ๋ฐ๋ณต ์์ / ํ์ ๋ถ์
- EDA
- ๋๋ฒ๊น
- ์ฌ๋ฌ ํต๊ณ๊ฐ ํ์ธ
โ cache ์ฐ๋ฉด ์ ๋๋ ๊ฒฝ์ฐ
1๏ธโฃ ํ ๋ฒ๋ง ์ฐ๋ df
df.filter(...).write.parquet(...)
๐ cache โ (์๋ฏธ ์์)
2๏ธโฃ df๊ฐ ๋๋ฌด ํผ
- ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ → spill → ์คํ๋ ค ๋๋ฆผ
3๏ธโฃ ๋ฐ๋ก write๋ง ํ๋ ๊ฒฝ์ฐ
- write๋ ์ด์ฐจํผ ํ ๋ฒ ์ก์
cache vs persist ์ฐจ์ด
- cache() = ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ณธ
- persist() = ์ ์ฅ ๋ฐฉ์ ์ ํ
df.persist(StorageLevel.MEMORY_AND_DISK)
๐ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋๋นํ ๋
์ค๋ฌด์์ ์์ฃผ ์ฐ๋ ํจํด
df_clean = (
df_raw
.filter(...)
.join(...)
)
df_clean.cache()
df_clean.count()
df_clean.write.parquet(...)
๊ทธ๋ฆฌ๊ณ ๋๋๋ฉด ๐
df_clean.unpersist()
Spark UI๋ก ํ์ธํ๋ ๋ฒ
- Storage ํญ
- Cached RDDs / DataFrames
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ํ์ธ
๐ cache ํ์ผ๋ฉด ๊ผญ ํ์ธ
๋ฉด์ ์ฉ ํ ๋ฌธ์ฅ
“Spark์์ df.cache()๋
๋์ผํ DataFrame์ ์ฌ๋ฌ ์ก์ ์์ ์ฌ์ฌ์ฉํ ๋
์ค๋ณต ๊ณ์ฐ์ ํผํ๊ธฐ ์ํด ์ฌ์ฉํ๋ฉฐ,
ํ ๋ฒ๋ง ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ์ฌ์ฉํ์ง ์์ต๋๋ค.”
๋ง์ง๋ง ํต์ฌ ๋ฌธ์ฅ
๐ cache๋ ‘์ฌ์ฌ์ฉํ ๋๋ง’ ์จ๋ผ.
'DataEngineering > Spark' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Spark ์ต์ ํ ์ฒดํฌ๋ฆฌ์คํธ (0) | 2026.01.30 |
|---|---|
| Suffle์ด๋? (1) | 2026.01.30 |
| Dataframe ์ด๋? (0) | 2026.01.30 |
| Lazy Evaluation ์ด๋? (0) | 2026.01.30 |
| Spark ๋? (0) | 2026.01.30 |