๋ชฉ๋ก์ „์ฒด ๊ธ€ (59)

๐Ÿฅ

[Spark] Accumulator์™€ Broadcast (๊ณต์œ ๋ณ€์ˆ˜)

์ฐธ๊ณ : https://spark.apache.org/docs/latest/rdd-programming-guide.html#shared-variables ๊ณต์œ ๋ณ€์ˆ˜ ์ŠคํŒŒํฌ์—์„œ๋Š” ๋ถ„์‚ฐํ•˜์—ฌ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•ด์„œ(ํŒŒํ‹ฐ์…”๋‹) ์—ฌ๋Ÿฌ ๋จธ์‹ ์—์„œ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ด๋•Œ ์‚ฌ์šฉ๋œ ๋ชจ๋“  ๋ณ€์ˆ˜๋Š” ๋ฐฐํฌ๋  ๋•Œ ๋ณต์‚ฌ๋œ ๋ณต์‚ฌ๋ณธ์œผ๋กœ ์ž‘๋™ํ•˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๋ณ€์ˆ˜์˜ ์—…๋ฐ์ดํŠธ๋Š” driver์— ๋‹ค์‹œ ์ „๋‹ฌ๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ์กฐ๊ฑด(?) ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ์ด๋Ÿด๋•Œ ์ œํ•œ๋œ ์œ ํ˜•์˜ ๊ณต์œ  ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ํ›„ ์›ํ•˜๋Š” ๊ฐ’์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. Broadcast Variable ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€์ˆ˜์˜ ๋ณต์‚ฌ๋ณธ์„ ์ „๋‹ฌํ•˜๋Š”๊ฒŒ ์•„๋‹Œ, Read Only ๋ณ€์ˆ˜๋ฅผ ๊ฐ ์›Œ์ปค ๋…ธ๋“œ์— ์บ์‹œ๋œ ์ƒํƒœ๋กœ..

๋ฐ์ดํ„ฐ/Spark 2024. 4. 1. 20:55
[Spark] ์ŠคํŒŒํฌ ์Šค์ผ€์ฅด๋ง

Application ์Šค์ผ€์ฅด๋ง ๊ด€๋ จํ•˜์—ฌ https://community.cloudera.com/t5/Community-Articles/Dynamic-Allocation-in-Apache-Spark/ta-p/368095 ์ด์ชฝ์— ์ •๋ฆฌ๊ฐ€ ์ž˜ ๋˜์–ด ์žˆ๋‹ค. SRA(Static Resource Allocation) spark ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์‹คํ–‰๋˜๊ธฐ ์ „ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•  ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฏธ๋ฆฌ ์˜ˆ์•ฝํ•ด๋‘”๋‹ค. ์ด ๋ฆฌ์†Œ์Šค์˜ ์–‘์€ ๊ณ ์ •๋˜์–ด์„œ ๋Ÿฐํƒ€์ž„์ค‘์—๋Š” ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๋งŒ์•ฝ ํ• ๋‹น๋œ ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด ์‹คํ–‰์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๊ฑฐ๋‚˜ ์‹คํŒจํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฆฌ์†Œ์Šค๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ์•ฝ ํ• ๋‹น๋œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋น„ํšจ์œจ์ ์ธ ๋ฆฌ์†Œ์Šค ํ™œ์šฉ์œผ๋กœ ์ด์–ด์ง€๊ฒŒ ๋œ๋‹ค. ๋˜ํ•œ ๋Ÿฐํƒ€์ž„์ค‘์— ๋ฆฌ์†Œ์Šค๋ฅผ ์กฐ์ •ํ•˜๋Š”๊ฒƒ์ด ๋ถˆ๊ฐ€..

๋ฐ์ดํ„ฐ/Spark 2024. 4. 1. 15:22
[Spark] Repartition๊ณผ Coalesce

spark๋ฅผ ํ†ตํ•ด ์—ฐ์‚ฐ์„ ํ•˜๋‹ค ๋ณด๋ฉด ํŒŒํ‹ฐ์…˜์ด ๊ณผ๋‹คํ•˜๊ฒŒ ๋งŽ๊ฑฐ๋‚˜ ๋„ˆ๋ฌด ์ ์€ ์ƒํ™ฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿด ๋•Œ์—๋Š” repartition๊ณผ coalesce๋ฅผ ํ†ตํ•ด ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜๋ฅผ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. `repartition()`๊ณผ `coalesce()` ๋ชจ๋‘ ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜๋ฅผ ์„ค์ •ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค. ํŒŒํ‹ฐ์…˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์กฐ์ •ํ•ด์ฃผ์ง€๋งŒ `coalesce()`๋Š” ํŒŒํ‹ฐ์…˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๊ฒƒ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์—์„œ ์ฐจ์ด์ ์ด ์žˆ๋‹ค. 1. ์‹คํ–‰ ์˜ˆ์‹œ repartition๊ณผ coalesce์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ shuffle ์ˆ˜ํ–‰ ์—ฌ๋ถ€์— ์žˆ๋‹ค. `coalesce`๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŒŒํ‹ฐ์…˜ ์ˆ˜๋ฅผ ์ค„์ธ ๊ฒฝ์šฐ, stage2์—์„œ coalesce ๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. load df1 load df2 df3 = df1.join(df2, some_co..