Spark Kryo Serializer
Databricks Certification ์ทจ๋์ ๋ชฉํ๋ก Apache Spark๋ฅผ โ์ ๋๋กโ ๊ณต๋ถํด๋ณด๊ณ ์์ต๋๋ค. ํ์ฌ์์ Databricks Unity Catalog๋ฅผ ๋์ ํ๋ ค๊ณ ๋ถํฌํ๊ณ ์๋๋ฐ์. Spark์ ์ข ์นํด์ง ์ ์์๊น์? ๐ ์ ์ฒด ํฌ์คํธ๋ Development - Spark์์ ํ์ธํด์ค ์ ์์ต๋๋ค.
์ง๋ ฌํ๋?
์ง๋ ฌํ(Serialization)์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(Java, Python ๋ฑ๋ฑ)์ ๊ฐ์ฒด๋ฅผ ๋ฐ์ด๋๋ฆฌ ํฌ๋งท์ธ byte ํํ๋ก ๋ณํํ๋ ์์ ์ ๋งํ๋ค. ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ด๋๋ฆฌ๋ก ๋ณํํ๊ณ , ์ด ๋ฐ์ดํฐ๋ฅผ ๋คํธ์ํฌ๋ ์ ์ฅ์๋ก ๋ณด๋ด๋ ์ฒ๋ฆฌํ๋ค. ๋ฐ์ดํฐ๋ฅผ Json, Csv ๋๋ Python Pickle ํ์ผ๋ก ์ ์ฅํ๋ ๋ชจ๋ ๊ณผ์ ์ด ์ง๋ ฌํ์ ํด๋นํ๋ค.
๋ฐ๋๋ง์ ์ญ์ง๋ ฌํ(deserialization)์ด๋ค. ๋ฐ์ด๋๋ฆฌ๋ก ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ฐ์ฒด๋ก ๋ณํํ๋ ๊ณผ์ ์ ๋งํ๋ค. ํ์ผ๋ก ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ฝ๊ฑฐ๋, Response๋ก ๋ฐ์ ๋คํธ์ํฌ ๋ฐ์ดํฐ์ ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ฝ๋ ๊ณผ์ ์ ๋งํ๋ค.
Spark์์์ ์ง๋ ฌํ
Spark์ ๋ง์ ๋ถ๋ถ์์ ๋ฐ์ดํฐ๋ฅผ ์ง๋ ฌํ ํ์ฌ ์ ๋ฌํ๋ค.
- ์์ปค ๋ ธ๋ ์ฌ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ํ๋ง ํ ๋
- RDD ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์ ์ฅํ ๋
Spark์์ 2๊ฐ์ง ๋ฐฉ์์ ์ง๋ ฌํ๋ฅผ ์ ๊ณตํ๋๋ฐ, ํ๋๊ฐ Java Serialization์ด๊ณ , ๋ ํ๋๊ฐ ์ ํฌ์คํธ์์ ์ดํด๋ณด๋ Kryo Serialization์ด๋ค.
Kryo Serializer
Spark ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด, Kryo๊ฐ Java ์ง๋ ฌํ ๋ณด๋ค ๋ณดํต 10๋ฐฐ ์ ๋ ๋น ๋ฅด๋ค๊ณ ํ๋ค. Spark์์ ๋ค๋ฃจ๋ ๋จ์ ๋ฐ์ดํฐ๋ค์ Kryo๋ฅผ ์ฌ์ฉํด ์ง๋ ฌํ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ํ์คํ ๋ซ๋ค๋ ๋ง.
๋ค๋ง, ์ Kryo ์ง๋ ฌํ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด spark.serializer
์ ๊ฐ์ org.apache.spark.serializer.KryoSerializer
๋ก ์ง์ ์ค์ ํด์ผ ํ๋ค.
์ง๋ ฌํ๋ ๊ฑฐ์ ๋ชจ๋ Spark ์์ ์์ ๋ฐ๋์ ์ผ์ด๋๊ธฐ ๋๋ฌธ์, Kryo ์ง๋ ฌํ๋ฅผ ์ฌ์ฉํ๋ ๊ฑด Spark ํ๋์ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ด๋ค. ์ฌ์ง์ด Kryo๋ฅผ ์ฐ๊ธฐ๋ง ํ๋ฉด ๊ฐ์ ์ด ๋๋ค๊ณ ํ๋ค!!! (๋๋ฐ)