๐Ÿ“•Week13 day2(Spark)

๋ฐ•์ค€ํฌยท2023๋…„ 11์›” 14์ผ

Spark

Spark๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์ „์— ๋น…๋ฐ์ดํ„ฐ ๊ธฐ์ˆ ๊ณผ ํ•˜๋‘ก์— ๊ด€ํ•ด ์„ค๋ช…ํ•œ๋‹ค.

๋น…๋ฐ์ดํ„ฐ ๊ธฐ์ˆ ์ด๋ž€?


๋น…๋ฐ์ดํ„ฐ์˜ ์ •์˜์™€ ์˜ˆ์‹œ

๋น…๋ฐ์ดํ„ฐ์˜ ์ •์˜ 1.
"์„œ๋ฒ„ ํ•œ ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๊ทœ๋ชจ์˜ ๋ฐ์ดํ„ฐ" (๋ถ„์‚ฐ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•˜๋А๋ƒ์— ํฌ์ปค์Šค)

๋น…๋ฐ์ดํ„ฐ์˜ ์ •์˜ 2.
"๊ธฐ์กด์˜ ์†Œํ”„ํŠธ์›จ์–ด(MySql๊ณผ ๊ฐ™์€ ๊ด€๊ณ„ํ˜• DB)๋กœ๋Š” ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๊ทœ๋ชจ์˜ ๋ฐ์ดํ„ฐ"
๋Œ€ํ‘œ์ ์ธ ๊ธฐ์กด ์†Œํ”„ํŠธ์›จ์–ด ์˜ค๋ผํด์ด๋‚˜ MYSQL๊ณผ ๊ฐ™์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
-๋ถ„์‚ฐ ํ™˜๊ฒฝ์„ ์—ผ๋‘์— ๋‘์ง€ ์•Š์Œ

๋น…๋ฐ์ดํ„ฐ์˜ ์ •์˜ 3.
4V
Volume(๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ๋Œ€์šฉ๋Ÿ‰?),
Velocity(๋ฐ์ดํ„ฐ์˜ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ์ค‘์š”?)
Variety(๊ตฌ์กฐํ™”/๋น„๊ตฌ์กฐํ™” ๋ฐ์ดํ„ฐ ๋‘˜ ๋‹ค?)
Varecity(๋ฐ์ดํ„ฐ์˜ ํ’ˆ์งˆ์ด ์ข‹์€์ง€?)

ํ•˜๋‘ก(Hadoop)


๋Œ€์šฉ๋Ÿ‰ ์ฒ˜๋ฆฌ๊ธฐ์ˆ ์ด๋ž€?

  • ๋ถ„์‚ฐํ™˜๊ฒฝ ๊ธฐ๋ฐ˜(1๋Œ€ ํ˜น์€ ๊ทธ ์ด์ƒ์˜ ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑ)
    ๋ถ„์‚ฐ ์ปดํ“จํŒ…๊ณผ ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ํ•„์š”

  • Fault Tolerance
    ์†Œ์ˆ˜์˜ ์„œ๋ฒ„๊ฐ€ ๊ณ ์žฅ๋‚˜๋„ ๋™์ž‘ํ•ด์•ผํ•จ

  • ํ™•์žฅ์ด ์šฉ์ดํ•ด์•ผํ•จ
    Scale Out์ด๋ผ๊ณ  ๋ถ€๋ฆ„

ํ•˜๋‘ก์˜ ๋“ฑ์žฅ

  • Doug Cutting์ด ๊ตฌ๊ธ€๋žฉ ๋ฐœํ‘œ ๋…ผ๋ฌธ๋“ค์— ๊ธฐ๋ฐ˜ํ•ด ๋งŒ๋“  ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ

  • ์ฒ˜์Œ ์‹œ์ž‘์€ Nutch๋ผ๋Š” ์˜คํ”ˆ์†Œ์Šค ๊ฒ€์ƒ‰์—”์ง„์˜ ํ•˜๋ถ€ ํ”„๋กœ์ ํŠธ
    2006๋…„์— ์•„ํŒŒ์น˜ ํ†ฑ๋ ˆ๋ฒจ ๋ณ„๊ฐœ ํ”„๋กœ์ ํŠธ๋กœ ๋–จ์–ด์ ธ ๋‚˜์˜ด

  • ํฌ๊ฒŒ ๋‘ ๊ฐœ์˜ ์„œ๋ธŒ ์‹œ์Šคํ…œ์œผ๋กœ ๊ตฌ์„ฑ
    ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ์ธ HDFS
    ๋ถ„์‚ฐ ์ปดํ“จํŒ… ์‹œ์Šคํ…œ์ธ MapReduce: ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์˜ ํšจ์œจ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š”๋ฐ ๋งž์ถค

MapReduce ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋ฌธ์ œ์ 

  • ์ž‘์—…์— ๋”ฐ๋ผ์„œ๋Š” MapReduce ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๋„ˆ๋ฌด ๋ณต์žกํ•ด์ง
  • ๊ฒฐ๊ตญ Hive(SQL on Hadoop)์ฒ˜๋Ÿผ MapReduce๋กœ ๊ตฌํ˜„๋œ SQL ์–ธ์–ด๋“ค์ด ๋‹ค์‹œ ๊ฐ๊ด‘์„ ๋ฐ›๊ฒŒ ๋จ
  • ๋˜ํ•œ MapReduce๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐฐ์น˜ ์ž‘์—…์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Œ (not realtime)

MapReduce ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ˆ์ œ

  • Word Count
    ๊ฐ™์€ key๋ฅผ ๊ฐ–๋Š” ๊ฒƒ๋“ค์€ ๊ฐ™์€ ๋ฆฌ๋“€์Šค๋กœ ๋ณด๋‚ด์ง
    ๋ฆฌ๋“€์Šค๋Š” ๋งต(key-value)์˜ ๊ฐ™์€ key๋“ค์„ ๋ฌถ์–ด์ฃผ๋Š” ๊ฒƒ์ด ๋ณด์žฅ๋จ

ํ•˜๋‘ก์˜ ๋ฐœ์ „

  • ํ•˜๋‘ก 1.0: HDFS์œ„์— MapReduce๋ผ๋Š” ๋ถ„์‚ฐ ์ปดํ“จํŒ… ์‹œ์Šคํ…œ์ด ๋„๋Š” ๊ตฌ์กฐ
    ๋‹ค๋ฅธ ๋ถ„์‚ฐ์ปดํ“จํŒ… ์‹œ์Šคํ…œ์€ ์ง€์›ํ•˜์ง€ ๋ชปํ•จ
  • ํ•˜๋‘ก 2.0์—์„œ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ํฌ๊ฒŒ ๋ณ€๊ฒฝ๋จ
    Spark๋Š” ํ•˜๋‘ก 2.0์œ„์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ์ด์–ด๋กœ ์‹คํ–‰๋จ
    ์†์‰ฌ์šด ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ๋กœ์ปฌ๋ชจ๋“œ๋„ ์ง€์›ํ•˜๋Š”๋ฐ ์ด๋ฒˆ ๊ฐ•์ขŒ์—์„œ๋Š” ๋กœ์ปฌ๋ชจ๋“œ ์‚ฌ์šฉ

HDFS: ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ

  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ธ”๋ก๋‹จ์œ„(ํฌ๊ธฐ๋Š” 128MB๊ฐ€ ๋””ํดํŠธ)๋กœ ์ €์žฅ
  • ๋ธ”๋ก ๋ณต์ œ ๋ฐฉ์‹(Replication)
    ๊ฐ ๋ธ”๋ก์€ ๊ธฐ๋ณธ์ ์œผ๋กœ 3๊ฐœ ์„œ๋ฒ„์— ์ค‘๋ณต ์ €์žฅ๋จ
    Fault tolerance๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹, ์ด ๋ธ”๋ก๋“ค์€ ์ €์žฅ๋จ

๋ถ„์‚ฐ ์ปดํ“จํŒ… ์‹œ์Šคํ…œ

  • ํ•˜๋‘ก 1.0 = MapReduce
    ํ•˜๋‚˜์˜ ์žก ํŠธ๋ž˜์ปค์™€ ๋‹ค์ˆ˜์˜ ํƒœ์Šคํฌ ํŠธ๋ž˜์ปค๋กœ ๊ตฌ์„ฑ๋จ
    ์žก ํŠธ๋ž˜์ปค๊ฐ€ ์ผ์„ ๋‚˜๋ˆ ์„œ ๋‹ค์ˆ˜์˜ ํƒœ์Šคํฌ ํŠธ๋ž˜์ปค์—๊ฒŒ ๋ถ„๋ฐฐ
  • ํ•˜๋‘ก 2.0
    ํด๋ผ์ด์–ธํŠธ, ๋ฆฌ์†Œ์Šค ๋งค๋‹ˆ์ €, ๋…ธ๋“œ ๋งค๋‹ˆ์ €, ์ปจํ…Œ์ด๋„ˆ๋กœ ์—ญํ• ์„ ์„ธ๋ถ„ํ™”

Spark


Spark์˜ ๋“ฑ์žฅ

  • ๋ฒ„ํด๋ฆฌ ๋Œ€ํ•™์˜ AMPLab์—์„œ ์•„ํŒŒ์น˜ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋กœ 2013๋…„ ์‹œ์ž‘
  • ํ•˜๋‘ก์˜ ๋’ค๋ฅผ ์ž‡๋Š” 2์„ธ๋Œ€ ๋น…๋ฐ์ดํ„ฐ ๊ธฐ์ˆ ๋กœ, ํ•˜๋‘ก 2.0์„ ๋ถ„์‚ฐํ™˜๊ฒฝ์œผ๋กœ ์‚ฌ์šฉ
  • Scala๋กœ ์ž‘์„ฑ๋จ
  • Pandas์™€ ๊ต‰์žฅํžˆ ํก์‚ฌ(์„œ๋ฒ„ ํ•œ ๋Œ€ ๋ฒ„์ „ vs. ๋‹ค์ˆ˜ ์„œ๋ฒ„ ๋ถ„์‚ฐํ™˜๊ฒฝ ๋ฒ„์ „)

Spark vs. MapReduce

  • Spark๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜์œผ๋กœ, ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์ง€๋ฉด ๋””์Šคํฌ ์‚ฌ์šฉ. MapReduce๋Š” ๋””์Šคํฌ ๊ธฐ๋ฐ˜
  • MapReduce๋Š” ํ•˜๋‘ก ์œ„์—์„œ๋งŒ ๋™์ž‘, Spark๋Š” ํ•˜๋‘ก(YARN)์™ธ์—๋„ ์ž์ฒด ๋ถ„์‚ฐํ™˜๊ฒฝ ๋“ฑ ๋‹ค๋ฅธ ๋ถ„์‚ฐ ์ปดํ“จํŒ… ํ™˜๊ฒฝ ์ง€์›
  • MapReduce๋Š” key, value๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ, Spark๋Š” ํŒ๋‹ค์Šค์™€ ๊ฐœ๋…์ ์œผ๋กœ ํก์‚ฌ
  • Spark๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์˜ ์ปดํ“จํŒ…(๋ฐฐ์น˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ์ŠคํŠธ๋ฆฌ๋ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ, SQL, ๋จธ์‹ ๋Ÿฌ๋‹, ๊ทธ๋ž˜ํ”„ ๋ถ„์„) ์ง€์›

Spark์˜ ๊ตฌ์กฐ

  • ๋“œ๋ผ์ด๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์˜ ์กด์žฌ
  • ํ•˜๋‘ก 2.0์œ„์— ์˜ฌ๋ผ๊ฐ€๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

Spark ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋…

  • RDD(Resilient Distributed Dataset)
    ๋กœ์šฐ๋ ˆ๋ฒจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ API๋กœ ใ……๋ฐ€ํ•œ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅ
    ํ•˜์ง€๋งŒ ์ฝ”๋”ฉ ๋ณต์žก๋„ ์ฆ๊ฐ€

  • Dataframe & Dataset(ํŒ๋‹ค์Šค์˜ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„๊ณผ ํก์‚ฌ
    ํ•˜์ด๋ ˆ๋ฒจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ API๋กœ ์ ์  ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ถ”์„ธ
    SparkSQL์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ด๋ฅผ ์“ฐ๊ฒŒ ๋จ

  • ๋ณดํ†ต Scala, Java, Python ์ค‘์˜ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉ

ํŒ๋‹ค์Šค์™€ ๋น„๊ต

ํŒ๋‹ค์Šค๋ž€?
-ํŒŒ์ด์ฌ์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ํ•˜๋Š”๋ฐ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ๋ชจ๋“ˆ ์ค‘์˜ ํ•˜๋‚˜
-์†Œ๊ทœ๋ชจ์˜ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ(ํ…Œ์ด๋ธ” ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ)๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ ์ตœ์ 

Spark ์„ธ์…˜
-Spark ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘์€ Spark ์„ธ์…˜์„ ๋งŒ๋“œ๋Š” ๊ฒƒ
-Spark์„ธ์…˜์„ ํ†ตํ•ด Spark์ด ์ œ๊ณตํ•ด์ฃผ๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉ

#RDD ๋งŒ๋“œ๋Š” ์˜ˆ์ œ
from pyspark.sql import SparkSession

spark = SparkSession \
    .builder \
    .appName("Python Spark create RDD example") \
    .config("spark.some.config.option", "some-value") \
    .getOrCreate()
sc = spark.sparkContext
#spark์™€ sc๋ฅผ ์ด์šฉํ•ด ๋’ค์—์„œ ๋ฐฐ์šธ RDD์™€ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ ์กฐ์ž‘ํ•˜๊ฒŒ ๋จ

Spark ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ


ํฌ๊ฒŒ 3๊ฐ€์ง€์˜ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

  • RDD(Resilient Distributed Dataset)
    ๋กœ์šฐ๋ ˆ๋ฒจ ๋ฐ์ดํ„ฐ๋กœ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ์„œ๋ฒ„์— ๋ถ„์‚ฐ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์นญ
    ๋ ˆ์ฝ”๋“œ๋ณ„๋กœ ์กด์žฌํ•˜๊ณ  ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ/๋น„๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ ๋ชจ๋‘ ์ง€์›

  • Dataframe๊ณผ Dataset
    RDD์œ„์— ๋งŒ๋“ค์–ด์ง€๋Š” ํ•˜์ด๋ ˆ๋ฒจ ๋ฐ์ดํ„ฐ๋กœ RDD์™€๋Š” ๋‹ฌ๋ฆฌ ํ•„๋“œ ์ •๋ณด๋ฅผ ๊ฐ€์ง.
    Dataset์€ Dataframe๊ณผ๋Š” ๋‹ฌ๋ฆฌ ํƒ€์ž… ์ •๋ณด๊ฐ€ ์กด์žฌํ•˜๋ฉฐ ์ปดํŒŒ์ผ ์–ธ์–ด(Scala/Java)์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
    PySpark์—์„œ๋Š” Dataframe์„ ์‚ฌ์šฉ(SparkSQL์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ผ๋ฐ˜์ )

Spark ๋ฐ์ดํ„ฐ๊ตฌ์กฐ - RDD

  • ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ถ„์‚ฐ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ
    ๋‹ค์ˆ˜์˜ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๊ตฌ์„ฑ๋˜๊ณ  Spark ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ์„œ๋ฒ„๋“ค์— ๋‚˜๋ˆ (cpu ์ˆ˜ ๋งŒํผ partition์œผ๋กœ ๋‚˜๋‰˜์–ด) ์ €์žฅ๋œ๋‹ค.
    ๋กœ์šฐ๋ ˆ๋ฒจ์˜ ํ•จ์ˆ˜ํ˜• ๋ณ€ํ™˜(map, filter, flatMap ๋“ฑ)์„ ์ง€์›ํ•œ๋‹ค.

  • RDD๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ๋Š” parallelize ํ•จ์ˆ˜๋กœ RDD๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

Spark ๋ฐ์ดํ„ฐ๊ตฌ์กฐ - ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„

  • RDD์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„๋„ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ถ„์‚ฐ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ
  • RDD์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๊ด€๊ณ„ํ˜• DB ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ์ปฌ๋Ÿผ์œผ๋กœ ๋‚˜๋ˆ  ์ €์žฅํ•œ๋‹ค.
    ํŒ๋‹ค์Šค์˜ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„๊ณผ ๊ฑฐ์˜ ํก์‚ฌํ•˜๋‹ค.
    Hive, ์™ธ๋ถ€ DB, RDD ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ์†Œ์Šค๋ฅผ ์ง€์›
  • Scala, Java, R, Python ์–ธ์–ด๋ฅผ ์ง€์›ํ•œ๋‹ค.

์ƒ์„ฑ ๋ฐฉ๋ฒ•

  • RDD๋ฅผ ๋ณ€ํ™˜ํ•ด์„œ ์ƒ์„ฑ : RDD์˜ toDFํ•จ์ˆ˜ ์‚ฌ์šฉ
  • SQL์ฟผ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ
    tablename์ž๋ฆฌ์— SELECT๋ฌธ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉํ•˜์—ฌ ์ƒ์„ฑ
    createDataFrame
#postgresql์—์„œ ํ…Œ์ด๋ธ”์„ ์ฝ์–ด Spark ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์œผ๋กœ ๋งŒ๋“ค๊ธฐ
df = spark.read.format("jdbc") \
	.option("url", "jdbc:postgresql://localhost:5432/databasename") \
    .option("dbtable", "tablename") \
    .option("user", "username") \
    .option("password", "password") \
    .option("driver", "org.postgresql.Driver") \
    .load()
df.printSchema()

Spark ๋ฐ์ดํ„ฐ๊ตฌ์กฐ - ๋ฐ์ดํ„ฐ์…‹

  • Spark 1.6๋ถ€ํ„ฐ ์ถ”๊ฐ€๋œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ํƒ€์ž…
    RDD์™€ SparkSQL์˜ ์ตœ์ ํ™” ์—”์ง„ ๋‘ ๊ฐ€์ง€ ์žฅ์ ์„ ์ทจํ–ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ์…‹์€ ํƒ€์ž…์ด ์žˆ๋Š” ์ปดํŒŒ์ผ ์–ธ์–ด(์Šค์นผ๋ผ, ์ž๋ฐ”)์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์—ฌ ํŒŒ์ด์ฌ์—์„œ๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

Spark ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

  1. ๊ฐœ์ธ ์ปดํ“จํ„ฐ์— ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
    ๊ฐ„ํŽธํ•˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ ๋…ธํŠธ๋ถ ๋“ฑ์„ ์„ค์น˜ํ•˜๋ ค๋ฉด ๋ณต์žกํ•ด์ง„๋‹ค. ์•„๋‹ˆ๋ฉด spark-submit์„ ์ด์šฉํ•ด ์‹คํ–‰๊ฐ€๋Šฅํ•˜๋‹ค.

  2. ๊ฐ์ข… ๋ฌด๋ฃŒ ๋…ธํŠธ๋ถ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
    ๊ตฌ๊ธ€ Colab์„ ์ด์šฉํ•˜๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ๋ธŒ๋ฆญ์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋…ธํŠธ๋ถ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์ œํ”Œ๋ฆฐ์˜ ๋ฌด๋ฃŒ ๋…ธํŠธ๋ถ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  3. AWS์˜ EMR ํด๋Ÿฌ์Šคํ„ฐ ์‚ฌ์šฉ


profile
๊ฒŒ์„๋ €๋˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๋ถ€

0๊ฐœ์˜ ๋Œ“๊ธ€