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

๐Ÿฅ

[Spark] Adaptive Query Execution(AQE)

Spark 2.x ์—์„œ๋Š” rule-based/cost-based์˜ ๋ฐฉ์‹์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์ตœ์ ํ™”ํ•œ๋‹ค. Spark 3.0๋ถ€ํ„ฐ๋Š” ๋Ÿฐํƒ€์ž„์— ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” AQE๊ฐ€ ๋„์ž…๋˜์—ˆ๊ณ , Spark 3.2 ๋ถ€ํ„ฐ๋Š” AQE ํ™œ์„ฑํ™”๊ฐ€ ๋””ํดํŠธ ๋ฒ„์ „์ด๋‹ค. AQE์—์„œ๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํฌ๊ฒŒ ์•„๋ž˜์˜ ์„ธ ๊ฐ€์ง€์˜ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค. Coalescing Post shuffle partitions Switching join strategies Optimizing Skew Join Coalescing Shuffle Partitions ์…”ํ”Œ ํŒŒํ‹ฐ์…˜์˜ ์ˆ˜๋ฅผ ์ตœ์ ํ™”ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ์…”ํ”Œ์€ ์ŠคํŒŒํฌ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์— ๋งค์šฐ ํฐ ์—ญํ• ์„ ์ฐจ์ง€ํ•˜๊ณ , ๊ธฐ์กด์—๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์…”ํ”Œ ํฌ๊ธฐ ๋ฐ ํŒŒํ‹ฐ์…˜์„ ์ง์ ‘ ํ™•์ธํ•˜๋ฉฐ ์ˆ˜๋™์œผ๋กœ ํŒŒํ‹ฐ์…˜ ์ˆ˜๋ฅผ ์กฐ์ •ํ•ด์ฃผ์–ด์•ผ ํ–ˆ๋‹ค. AQE์—..

๋ฐ์ดํ„ฐ/Spark 2024. 3. 23. 15:45
[Spark] Spark Join ์ข…๋ฅ˜

์ŠคํŒŒํฌ์—์„œ Join ์‹œ์—๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ Shuffle ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๊ณ , ์ด๋Š” executor ์‚ฌ์ด์˜ ๋ฐฉ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์ด๋™์„ ์•ผ๊ธฐํ•œ๋‹ค. ์ŠคํŒŒํฌ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์กฐ์ธ์˜ ๋ฐฉ์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 1. Broadcast Hash Join ๋‘ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ธํ•  ๋•Œ ํ•œ ์ชฝ์ด ๋งค์šฐ ์ž‘๊ณ  ํ•œ ์ชฝ์€ ๋งค์šฐ ํฐ ์‚ฌ์ด์ฆˆ์˜ ๋ฐ์ดํ„ฐ์ผ ๋•Œ, ๋” ์ž‘์€ ์ชฝ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ Driver์— ์˜ํ•ด ๋ชจ๋“  executor๋กœ ๋ณต์‚ฌ๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์‚ฌ์ด์ฆˆ๊ฐ€ ์ž‘์€ ํ…Œ์ด๋ธ”์˜ ํ‚ค ๊ฐ’์„ ํ•ด์‹œ ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“ ๋‹ค. ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ๊ฐ’์„ ํฐ ํ…Œ์ด๋ธ” ํŒŒํ‹ฐ์…˜์— ๋ณต์‚ฌํ•ด์ค€๋‹ค. ๊ฐ ํŒŒํ‹ฐ์…˜ ๋‚ด๋ถ€์—์„œ ์กฐ์ธ์„ ์ง„ํ–‰ํ•œ๋‹ค. ์ด ๋ฐฉ์‹์€ shuffle์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์ด๋™์— ๋”ฐ๋ฅธ ์ฝ”์ŠคํŠธ๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค. ๋ชจ๋“  executor์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์‚ฌํ•˜๋ ค๋Š” dataset์ด ..

๋ฐ์ดํ„ฐ/Spark 2024. 3. 18. 00:03