| RDD | DataFrame | Dataset | |
|---|---|---|---|
| What? | Distributed collection of records (structured & unstructured) | RDD organized into named column | Extension of data frame |
| When | 1.0 | 1.3 | 1.6 |
| Compile type Check | No | No | Yes |
| API | No | Yes | Yes |
| Base Spark SQL | No | Yes | Yes |
| Catalyst Optimizer | No | Yes | Yes |
๋ก์ฐ๋ ๋ฒจ ๋ฐ์ดํฐ๋ก ํด๋ฌ์คํฐ ๋ด์ ์๋ฒ์ ๋ถ์ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ง์นญํ๋ค.
๋ ์ฝ๋๋ณ๋ก ์กด์ฌํ์ง๋ง ์คํค๋ง๊ฐ ์กด์ฌํ์ง ์๋๋ค.
ํ๋ก๊ทธ๋๋ฐ ์์ฐ์ฑ์ด ๋จ์ด์ง๋ค.
RDD์ ๋ฌ๋ฆฌ ํ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค -> Table
Dataset์ Type ์ ๋ณด๊ฐ ์กด์ฌํ๋ฉฐ ์ปดํ์ผ ์ธ์ด์์ ์ฌ์ฉ๊ฐ๋ฅํ.
-> Scala/Java์์ ์ฌ์ฉ๊ฐ๋ฅ
PySpark์์๋ DataFrame์ ์ฌ์ฉํ๋ค.

1. Code Analysis : ์ฝ๋ ๋ถ์ -> ์๋ฌ ๋ถ์ถ
Logical Optimization (Catalyst Optimizer) : ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ๋ฐฉ์์ ์ฐพ๋๋ค.(๋น์ฉ ๊ณ์ฐ)
Physical Planning : ๋น์ฉ์ด ๊ฐ์ฅ ์ ๋ ดํ ๊ฒ์ ์ฐพ์์ RDD ์คํผ๋ ์ด์ ์ผ๋ก ์ฝ๋๋ฅผ ๋ง๋ ๋ค.
Code Generation (Project Tungsten) : ์ฝ๋ ๋ณํ -> ์๋ฐ ๋ฐ์ด์ฝ๋
py_list = [
(1, 2, 3, 'a b c'),
(4, 5, 6, 'd e f'),
(7, 8, 9, 'g h i')
]
rdd = sc.parallelize(py_list)
print(rdd.collect())

๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ ๋ถ์ฐ ์ ์ฅ๋ ๋ฐ์ดํฐ
RDD์๋ ๋ค๋ฅด๊ฒ ๊ด๊ณํ DB Table์ฒ๋ผ Column์ผ๋ก ๋๋์ด์ ์ ์ฅํ๋ค.
Scala, Java, Python๊ณผ ๊ฐ์ ์ธ์ด์์ ์ง์ํ๋ค.