본문 바로가기

IT/Spark12

Spark - Shuffling Shuffling은 분산 시스템 환경에서 데이터가 움직이는 것(A Node -> B Node)을 의미한다. 간단한 예시 하나를 확인해보자.case class CFFPurchase(customer: Int, destination: String, price: Double) val purchasesRDD = sc.parallelize(List(CFFPurchase(100, "Geneva", 22.25), | CFFPurchase(300, "Zurich", 42.10), | CFFPurchase(100, "Fribourg", 12.40), | CFFPurchase(200, "st. Gallen", 8.20), | CFFPurchase(100, "Lucerne", 31.60), | CFFPurchase(300, .. 2020. 2. 3.
Spark - Pair RDD Pair RDD는 key-value 형태의 RDD 묶음(?)이다.Spark에서 pair RDD가 중요한 이유는 일반적으로 대용량 데이터 처리는 key-value 형태에서 수행하기 때문이다.그런데 익숙하게도 key-value 형태는 여러 언어에서 사용하고 있다. (아래 Scala, Python 참조)Scala Python def val collection = Map( "A" -> 1, "B" -> 2, "C" -> 3 ) collection = { "A" : 1, "B" : 2, "C" : 3 } 이 때문인지는 모르겠지만, 대용량 데이터 처리를 위한 분산 시스템 환경에서는 key-value 형태가 매우 중요하다.그도 그럴 것이 분산 데이터 처리의 기반을 닦은 Google의 MapReduce가 key-val.. 2020. 2. 1.
Spark - Reduction In Parallel 먼저 Reduction은 값을 더 작은 값으로 변형한다는 의미이다.보다 쉬운 이해를 위해 아래에 Scala에서 reduction 관련 예시를 추가하였다. 그렇지만 언어를 떠나서 reduction은 입력받은 값을 최종적으로 단일 값으로 변경한다는 것이다.val collection = List(1, 3, 2, 5, 4, 7, 6) val res = collection.reduce((x, y) => x max y)val collection = List(1, 3, 2, 5, 4, 7, 6) val res = collection.fold(11)((x, y) => x max y)그런데 모든 Scala의 reduction 메소드가 Spark에서 동작하는 것은 아니다. 그 이유는 바로 Parallelizable 때문이.. 2020. 2. 1.
Spark - RDDs Resilient Distributed Datasets 즉, RDD는 변경할 수 없는(immutable) elements 집합이다. 간단히 RDD의 특징을 살펴보면- Partitioning- Persistence- Fault Tolerance- Lazy Evalution- ...이 밖에도 많이 있지만, 자세한 것은 처음 접할 때 어려울 수 있으니 차근차근 알아보도록 하겠다.다만, 이와 같은 특징들은 Spark가 데이터를 효과적으로 처리할 수 있도록 한다.*RDD의 원천부터 알고 싶다면, "https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final138.pdf" 관련 Paper를 읽어보는 것을 추천한다. 위에서 언급했듯이, RDD는 여러가지 데이.. 2020. 1. 24.