๋ชฉ๋ก์ ์ฒด ๊ธ (59)
๐ฅ
์ฐธ๊ณ : https://spark.apache.org/docs/latest/rdd-programming-guide.html#shared-variables ๊ณต์ ๋ณ์ ์คํํฌ์์๋ ๋ถ์ฐํ์ฌ ๋ณ๋ ฌ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํด์(ํํฐ์ ๋) ์ฌ๋ฌ ๋จธ์ ์์ ๋์์ ์ฒ๋ฆฌํ๋ค. ์ด๋ ์ฌ์ฉ๋ ๋ชจ๋ ๋ณ์๋ ๋ฐฐํฌ๋ ๋ ๋ณต์ฌ๋ ๋ณต์ฌ๋ณธ์ผ๋ก ์๋ํ๋๋ฐ, ์ด๋ฌํ ๋ณ์์ ์ ๋ฐ์ดํธ๋ driver์ ๋ค์ ์ ๋ฌ๋์ง ์๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ค ์กฐ๊ฑด(?) ์ ๊ฐ์ง๊ณ ์์ด์ผ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๋๋ฐ, ์ด๋ด๋ ์ ํ๋ ์ ํ์ ๊ณต์ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๋ ฌ ์ฒ๋ฆฌ ํ ์ํ๋ ๊ฐ์ ๋ฐ์ ์ ์๋ค. Broadcast Variable ๋ธ๋ก๋์บ์คํธ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ์์ ๋ณต์ฌ๋ณธ์ ์ ๋ฌํ๋๊ฒ ์๋, Read Only ๋ณ์๋ฅผ ๊ฐ ์์ปค ๋ ธ๋์ ์บ์๋ ์ํ๋ก..
SQL Hint ์ฐธ๊ณ : https://spark.apache.org/docs/latest/sql-ref-syntax-qry-select-hints.html ๋ฌธ๋ฒ /*+ hint [ , ... ] */ ํํฐ์ ๋ ํํธ ํํฐ์ ๋ ์ ๋ต์ ์ ์ํ ์ ์๋ค. COALESCE `coalesce` dataset API์ ๋์ผํ๋ค. ๋งค๊ฐ๋ณ์๋ ํํฐ์ ๊ฐ์์ด๊ณ , ์ง์ ๋ ํํฐ์ ์๋ก ์ค์ผ ์ ์๋ค. SELECT /*+ COALESCE(3) */ * FROM t; REPARTITION `repartition` dataset API ์ ๋์ผํ๋ค.ํํฐ์ ๊ฐ์, ์ปฌ๋ผ๋ช ์ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํ ์ ์๊ณ ์ง์ ๋ ์์ ํํฐ์ ์ผ๋ก ๋ค์ ๋ถํ ํ๋๋ฐ์ ์ฌ์ฉ๋๋ค. SELECT /*+ REPARTITION(3) */ * FROM t; SELECT ..
Application ์ค์ผ์ฅด๋ง ๊ด๋ จํ์ฌ https://community.cloudera.com/t5/Community-Articles/Dynamic-Allocation-in-Apache-Spark/ta-p/368095 ์ด์ชฝ์ ์ ๋ฆฌ๊ฐ ์ ๋์ด ์๋ค. SRA(Static Resource Allocation) spark ์ดํ๋ฆฌ์ผ์ด์ ์ ์คํ๋๊ธฐ ์ ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ ๋ฆฌ์์ค๋ฅผ ๋ฏธ๋ฆฌ ์์ฝํด๋๋ค. ์ด ๋ฆฌ์์ค์ ์์ ๊ณ ์ ๋์ด์ ๋ฐํ์์ค์๋ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๋ค. ๋ง์ฝ ํ ๋น๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๋ฆฌ์์ค๊ฐ ํ์ํ๋ค๋ฉด ์คํ์๊ฐ์ด ๊ธธ์ด์ง๊ฑฐ๋ ์คํจํ ์ ์๋ค. ๋ฆฌ์์ค๊ฐ ๊ณ ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ง์ฝ ํ ๋น๋ ๋ฆฌ์์ค๊ฐ ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋์ง ์๋๋ค๋ฉด ๋นํจ์จ์ ์ธ ๋ฆฌ์์ค ํ์ฉ์ผ๋ก ์ด์ด์ง๊ฒ ๋๋ค. ๋ํ ๋ฐํ์์ค์ ๋ฆฌ์์ค๋ฅผ ์กฐ์ ํ๋๊ฒ์ด ๋ถ๊ฐ..
spark๋ฅผ ํตํด ์ฐ์ฐ์ ํ๋ค ๋ณด๋ฉด ํํฐ์ ์ด ๊ณผ๋คํ๊ฒ ๋ง๊ฑฐ๋ ๋๋ฌด ์ ์ ์ํฉ์ด ์์ ์ ์๋ค. ์ด๋ด ๋์๋ repartition๊ณผ coalesce๋ฅผ ํตํด ํํฐ์ ๊ฐ์๋ฅผ ์ง์ ํด์ค ์ ์๋ค. `repartition()`๊ณผ `coalesce()` ๋ชจ๋ ํํฐ์ ๊ฐ์๋ฅผ ์ค์ ํด์ฃผ๋ ํจ์์ด๋ค. ํํฐ์ ์ ๊ฐ์๋ฅผ ์กฐ์ ํด์ฃผ์ง๋ง `coalesce()`๋ ํํฐ์ ์ ๊ฐ์๋ฅผ ์ค์ด๋ ๊ฒ๋ง ๊ฐ๋ฅํ๋ค๋ ์ ์์ ์ฐจ์ด์ ์ด ์๋ค. 1. ์คํ ์์ repartition๊ณผ coalesce์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ shuffle ์ํ ์ฌ๋ถ์ ์๋ค. `coalesce`๋ฅผ ์ฌ์ฉํด์ ํํฐ์ ์๋ฅผ ์ค์ธ ๊ฒฝ์ฐ, stage2์์ coalesce ๊ฐ ์ํ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. load df1 load df2 df3 = df1.join(df2, some_co..
์คํํฌ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ฉด action ์ฐ์ฐ์ ์ํ ์์ ๋ฐ์ดํฐ๊ฐ ๋ก๋๋๋ค. ๋ฐ๋ณต๋ ๋์ผํ ์ฐ์ฐ์ ํ๋ค๋ฉด ๋งค๋ฒ action ๋ ๋ก๋ํ์ง ์๊ณ cache()์ persist()๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผ์ํฌ ์ ์๋ค. ์บ์๋ ๋ฐ์ดํฐ๋ storage memory์ ๋ณด๊ด๋๋ค. 1. cache() ์ persist() cache์ persist ๋ชจ๋ ๋์ผํ๋ฐ persist์์๋ storageLevel์ ์ค์ ํด์ค ์ ์๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์๋ค. `cache()`๋ Dataframe ์ ๊ฒฝ์ฐ`persist(storageLevel=MEMORY_AND_DISK)` , RDD์ ๊ฒฝ์ฐ ` persist(storageLevel=MEMORY_ONLY)` ์ ๊ฐ์ ํจ์์ด๋ค. https://spark.apache.org/..