Resilient Distributed Dataset
What is Resilient Distributed Dataset?
Resilient Distributed Dataset(์ดํ RDD)์ Spark์์ ์ฌ์ฉ๋๋ object๋ก, ๋ค์๊ณผ ๊ฐ์ ๋๊ฐ์ง ํน์ง์ ๊ฐ์ง๊ณ ์๋ค.
-
Resilient and Distributed ๊ฐ์ฅ ํจ์จ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก Cluster Manager๊ฐ ์ฌ๋ฌ cluster์ task๋ฅผ ์ ์ ํ๊ฒ ๋ถ๋ฐฐํ๋ค. ๋ฐ๋ผ์ ๋ง์ฝ ํ cluster๊ฐ task๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ์ํ๊ฐ ๋๋ค ํ๋๋ผ๋ ํด๋น task๋ ๋ค๋ฅธ cluster๊ฐ ์ฒ๋ฆฌํ ์ ์๋ค๋ก ํ๋ค. ์ด๋ฌํ ๊ณผ์ ์ Spark ๋ด์์ ์๋์ผ๋ก ์ด๋ฃจ์ด์ง๋ฏ๋ก ๋ฐ๋ก ์ ๊ฒฝ ์ธ ํ์๊ฐ ์๋ค.
-
Dataset ๋ฐ์ดํฐ์ ์ ํ๋์ object๋ก ํํํ ์ ์๋ค. Spark๋ ๋น ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ํนํ๋์ด ์์ผ๋ฏ๋ก ํฐ ๋ฐ์ดํฐ์ ์ด ํ๋์ object๋ก ํํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
SparkContext
SparkContext, ์ฆ SC๋ RDD๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์์์ ๊ณผ ๊ฐ์ ์ญํ ์ ํ๋ค. ์ฆ, RDD๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋ ์ฌ์ ์ SparkContext๋ฅผ ์ค์ ํด์ผ ํ๋ค.
Creating RDD
RDD๋ ๋ค์ํ format์ผ๋ก ๋ ํ์ผ๋ก๋ถํฐ ์์ฑํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ format๋ค์ด ์๋ค:
- Text file
- Hive
- JDBC
- Cassandra
- HBase
- Elasticsearch
- JSON
Transforming RDD
RDD object๋ฅผ ์์ฑํ์์ผ๋ฉด ํด๋น object์ ๋ค์ํ ์ฐ์ฐ์ ์ ์ฉํ ์ ์๋ค. Python์ด๋ Java์์ ์ฌ์ฉ๋๋ ์ฐ์ฐ๊ณผ ๋น์ทํ๋ฏ๋ก ๊ธ๋ฐฉ ์ดํดํ๊ณ ์ ์ฉํ ์ ์์ ๊ฒ์ด๋ค. ๋ํ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ฐ์ฐ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค:
- map: ํจ์๋ฅผ RDD์ ์์๋ค์ ์ผ๋์ผ ์ ์ฉํ๋ค.
- flatmap: ํจ์๋ฅผ RDD์ ์์๋ค์ ์ผ๋๋ค ์ ์ฉํ๋ค.
- filter
- distinct
- sample
- union, intersection, subtract, cartesian
RDD Actions
RDD์ ๋์ํ action์ ์ ์ฉํ ์ ์๋ค. ๋ํ์ ์ผ๋ก ์ฌ์ฉ๋๋ action์ ๋ค์๊ณผ ๊ฐ๋ค:
- collect
- count
- countByValue
- take
- top
- reduce
Key-Value RDD
RDD๋ ํค-๊ฐ์ผ๋ก ํํํ์ฌ ์ฐ์ฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ด๋, RDD์ ๊ฐ ๋ผ์ธ์ ์ฒซ๋ฒ์งธ ๊ฐ์ด ํค ๊ฐ์ด ๋๋ค. ๋ํ์ ์ผ๋ก ์ฌ์ฉ๋๋ ํค-๊ฐ ์ฐ์ฐ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค:
- mapValues: Value ๊ฐ์ ๋ช ์๋ ํจ์๋ฅผ ์ ์ฉํ์ฌ ์ฐ์ฐํ๋ค.
- reduceByKey: ๊ฐ์ ํค๋ผ๋ฆฌ ์ฐ์ฐ์ ์ ์ฉํ๋ค.
- SortByKey: ํค ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ค.
Comments