๋ชฉ๋ก๋ฐ์ดํฐ (40)
๐ฅ
Spark Streaming ์ด๋ core spark API์ ํ์ฅ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ถ์ฐ ์คํธ๋ฆผ ์ฒ๋ฆฌ ํ๋ก์ธ์ฑ์ ์ง์ํ๋ค. streaming ํ์ ์ผ๋ก๋ ์๋์ ๊ฐ์ด ๋ ์ข ๋ฅ๊ฐ ์๋๋ฐ spark streaming์ RDD ๋ฒ ์ด์ค ์์ง์ผ๋ก, 2.x๋ฒ์ ๊น์ง ์ง์ํ๊ณ ์ดํ ๋์ด์ ์ ๋ฐ์ดํธ ๋์ง ์๋ ๋ ๊ฑฐ์ ํ๋ก์ ํธ์ด๋ค. Spark Streaming ์ข ๋ฅ Spark Streaming: RDD ๊ธฐ๋ฐ์ micro-batch ์ํ Spark Structured Streaming: Dataframe ๊ธฐ๋ฐ micro-batch ์ํ, ์ ์ง์ฐ ์ฒ๋ฆฌ ๋ชจ๋๋ฅผ ๋์ ํจ์ผ๋ก์จ ์ค์๊ฐ์ ๊ฐ๊น์ด ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ง. Spark Structured Streaming ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ structured streaming์์๋ ํธ๋ฆฌ๊ฑฐ ๊ฐ๊ฒฉ๋ง๋ค ์์ ..
์ฐธ๊ณ : 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 ์ดํ๋ฆฌ์ผ์ด์ ์ ์คํ๋๊ธฐ ์ ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ ๋ฆฌ์์ค๋ฅผ ๋ฏธ๋ฆฌ ์์ฝํด๋๋ค. ์ด ๋ฆฌ์์ค์ ์์ ๊ณ ์ ๋์ด์ ๋ฐํ์์ค์๋ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๋ค. ๋ง์ฝ ํ ๋น๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๋ฆฌ์์ค๊ฐ ํ์ํ๋ค๋ฉด ์คํ์๊ฐ์ด ๊ธธ์ด์ง๊ฑฐ๋ ์คํจํ ์ ์๋ค. ๋ฆฌ์์ค๊ฐ ๊ณ ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ง์ฝ ํ ๋น๋ ๋ฆฌ์์ค๊ฐ ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋์ง ์๋๋ค๋ฉด ๋นํจ์จ์ ์ธ ๋ฆฌ์์ค ํ์ฉ์ผ๋ก ์ด์ด์ง๊ฒ ๋๋ค. ๋ํ ๋ฐํ์์ค์ ๋ฆฌ์์ค๋ฅผ ์กฐ์ ํ๋๊ฒ์ด ๋ถ๊ฐ..
์คํํฌ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ฉด 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/..