Unstructured
Semi-structured
Structured
| ํน์ง | CSV | JSON | PARQUET | AVRO |
|---|---|---|---|---|
| Column Storage | X | X | Y | X |
| ์์ถ ๊ธฐ๋ฅ | Y | Y | Y | Y |
| Splittable | Y | Y | Y | Y |
| Human readable | Y | Y | X | X |
| Nested Structure support | X | Y | Y | Y |
| Schema evolution | X | X | Y | Y |
Twiter & Cloudera ์์ ๊ณต๋ ๊ฐ๋ฐํ์๋ค. (Doug Cutting)

Hybrid Storage (Row Group)
-> Paruet๊ฐ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค. ํ๋์ ๋ฐ์ดํฐ ๋ธ๋ก์ ํ๋์ Row Group์ผ๋ก ๊ตฌ์ฑ๋์๋ค.
Transformations
Actions
spark.read.option("header", True).csv("test.csv"). \
where("gender <> 'F'"). \
select("name", "gender"). \
groupby("gender). \
count(). \
show()

Action -> Job -> 1+Stages -> 1+Tasks
Action
-> Job์ ํ๋ ๋ง๋ค์ด๋ด๊ณ ์ฝ๋๊ฐ ์ค์ ๋ก ์คํ๋๋ค.
Job
Stage
Task
-> ๊ฐ์ฅ ์์ ์คํ ์ ๋์ผ๋ก Executor์ ์ํด ์คํ๋๋ค.
๋๋ค Hive ๋ฉํ์คํ ์ด์ ์ฌ์ฉ์ด ํํจํ๋ค -> saveAsTable
๋ฐ์ดํฐ ์ ์ฅ์ ์ดํ ๋ฐ๋ณต์ฒ๋ฆฌ์ ์ต์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ํ๋ ๊ฒ์ด๋ค.
Bucketing
FileSystem Partitioning
DataFrame์ ํน์ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๋์ด์ ํ ์ด๋ธ๋ก ์ ์ฅํ๋ค.
๋ค์๋ถํฐ๋ ์ด๋ฅผ ๋ก๋ฉํ์ฌ ์ฌ์ฉํจ์ผ๋ก์จ ๋ฐ๋ณต ์ฒ๋ฆฌ์ ์๊ฐ์ ๋จ์ถํ ์ ์๋ค.
๋ฐ์ดํฐ์ ํน์ฑ์ ์ ์๊ณ ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.


๋ฐ์ดํฐ๋ฅผ Partition Key ๊ธฐ๋ฐ ํด๋ ("Partition") ๊ตฌ์กฐ๋ก ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋๋์ด์ ์ ์ฅํ๋ค.
-> Hive์์ ์ฌ์ฉํ๋ Partitioning์ ๋งํ๋ค.
Partitioning ์
Partitioning์ ์ฅ์
DataFrameWriter์ paritionBy๋ฅผ ์ฌ์ฉํ๋ค.
-> Partition key๋ฅผ ์๋ชป ์ ํํ๋ฉด ์์ฒญ๋๊ฒ ๋ง์ ํ์ผ๋ค์ด ์์ฑ๋๋ค.
-> Partition key๋ ์นด๋๋๋ฆฌํฐ๊ฐ ๋ฎ์๊ฒ์ ์ฌ์ฉํด์ผํ๋ค.
