[Spark] RDD ๊ฐœ๋… ๋ฐ ์ฝ”๋“œ

2022. 4. 24. 13:35ใ†๐Ÿ›  Data Engineering/Apache Spark

 

 

 

RDD(Resilient Distributed Dataset)๋ž€?

์ง์—ญํ•˜๋ฉด ํƒ„๋ ฅ์ ์ธ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ์…‹์ด๋‹ค.

๋ง ๊ทธ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ์— ๋ถ„์‚ฐํ•˜์—ฌ ์ €์žฅํ•˜๋ฉฐ,

๊ทธ๋Ÿฐ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ„๋ ฅ์ ์œผ๋กœ ์ด์šฉ(์ด์Šˆ ๋ฐœ์ƒ ์‹œ ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ๋กœ ๋Œ์•„๊ฐ€๊ธฐ ๋“ฑ)ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฐ์ดํ„ฐ์…‹์ด๋‹ค.

 

 

์ง€๊ธˆ๋ถ€ํ„ฐ RDD์˜ ํŠน์ง•์„ ํ†บ์•„๋ณด์ž.

 

 

 

 

 

1. ๋ฐ์ดํ„ฐ์˜ ๋ถ„์‚ฐ

 

RDD๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ํด๋Ÿฌ์Šคํ„ฐ์— ๋ถ„์‚ฐ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. 

ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ํด๋Ÿฌ์Šคํ„ฐ์— ํฉ์–ด์ ธ์žˆ์–ด๋„ ํ•˜๋‚˜์˜ ํŒŒ์ผ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

 

 

# ํŒจํ‚ค์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ 
from pyspark import SparkConf, SparkContext
import pandas as pd



# Spark ์„ค์ •
conf = SparkConf().setMaster("local").setAppName("uber-date-trips")
sc = SparkContext(conf=conf)

# ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ ธ์˜ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ํŒŒ์ผ
directory = "C:/DE study/data-engineering/01-spark/data"
filename = "tripdata_03.csv"

# ๋ฐ์ดํ„ฐ ํŒŒ์‹ฑ
lines = sc.textFile(f"file:///{directory}/{filename}")

 

lines = sc.textFile()์„ ๋ณด์ž.

sc(SparkContext)์œผ๋กœ RDD์ž„์„ ์ง€์ •ํ–ˆ์ง€๋งŒ, lines ๊ฐ์ฒด์— ๋‹ด์Œ์œผ๋กœ์จ ํ•˜๋‚˜์˜ ํŒŒ์ผ์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

 

 

 

2. Resilient & Immutable

 

๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ๊ตฐ๋ฐ์„œ ์—ฐ์‚ฐ๋˜๋Š”๋ฐ, ์—ฌ๋Ÿฌ ๋…ธ๋“œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ง๊ฐ€์ง„๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?

RDD๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ Immutable ํ•˜์—ฌ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค. 

 

 

RDD๋Š” ๋ณ€ํ™˜์„ ํ•ด๋„ RDD 1์ด ๋ฐ”๋€Œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ RDD 2๊ฐ€ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค. ๋ณ€ํ™˜์„ ๊ฑฐ์น  ๋•Œ๋งˆ๋‹ค ์—ฐ์‚ฐ ๊ธฐ๋ก์ด ๋‚จ์œผ๋ฉฐ ์ด์— ๋”ฐ๋ผ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ๋„ ์‰ฝ๊ฒŒ ์ „ RDD๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. 

 

์ฆ‰, Node 1์ด ์—ฐ์‚ฐ ๋„์ค‘ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ณต์›์‹œํ‚ค๊ณ  Node 2์—์„œ ์—ฐ์‚ฐํ•˜๋ฉด ๋œ๋‹ค. 

 

 

 

 

 

3. Type-safe

 

Integer RDD, String RDD, Double RDD ๋“ฑ์œผ๋กœ  Type-safe ๋œ๋‹ค.

์ด์— ๋”ฐ๋ผ ์ปดํŒŒ์ผ ์‹œ Type๋ฅผ ํŒ๋ณ„ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ผ์ฐ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

 

4. Unstructured/ Structured Data

 

Unstructured Data: ํ…์ŠคํŠธ, ๋กœ๊ทธ, ์ž์—ฐ์–ด

Structured Data: ํ…Œ์ด๋ธ”, RDB, DataFrame

 

๊ตฌ์กฐ์ , ๋น„๊ตฌ์กฐ์  ๋ฐ์ดํ„ฐ ๋ชจ๋‘ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

 

5. Lazy Evaluation

 

Spark Operation = TransForm + Action

 

Spark๋Š” ์•ก์…˜์„ ํ•  ๋•Œ๊นŒ์ง€ ๋ณ€ํ™˜์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค. Action์„ ํ•˜๊ฒŒ ๋˜๋ฉด ๊ทธ๋•Œ์„œ์•ผ(Lazy) ๋ณ€ํ™˜์„ ํ•œ๋‹ค.

 

 

 

 

 

 

RDD์˜ ์žฅ์ ์€ ๋ฌด์—‡์ธ๊ฐ€?

1. ์œ ์—ฐํ•˜๋‹ค

2. ์งง์€ ์ฝ”๋“œ๋กœ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ

3. ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ™”๋  ๊ฒƒ์ธ๊ฐ€? ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.