2015년에 나온 Scala 언어를 만든 마틴 오더스키의 PT를 녹화한 영상이다.


  PT에서 우선, Scala와 Spark의 구조 관계를 설명한다. 데이터 분석을 위한 Scala 코드는 byte code로 변환되어 Java Runtime이 실행할 수 있는 준비를 한 후, JVM에서 상주하는 Spark Runtime 에서 변환된 byte code를 가져다가 쓰는 형태를 보여주고 있다.


  그리고 Scala와 Spark의 Collection 동작에 대한 차이를 알려준다.  Scala는 collection 동작이 strict하게 실행되지만, Spark 에서는 Action 동작 전까지의 Transformations 동작이 전부 Lazy 하게 동작한다. 이 외에도, Java 8에서 사용하는 Lifted하다는 동작을 소개한다. Lifted의 의미는 기존 collection(예 List)에서  stream() 함수를 호출하여 Collection을 stream 형태로 바꾼 후, 그 뒤에 이뤄지는 동작은 모두 stream 형태로 놔둔다. 그 다음에 collect() 같은 함수를 호출하면 기존에 적용했던 모든 동작들을 처리하고, 다시 기존 Collection으로 복귀한다는 내용이다.


  또, 왜 Spark에서 Python을 사용하지 않고 Scala를 사용하라는 근거를 제시한다. 우선, Python을 위한 wrapping이 많은 자원을 소모한다는 것이다. 그리고, Scala에서의 강한 Type System은 데이터 분석을 할 때, 데이터 타입에 대한 오류를 줄여준다는 것이다. 데이터 사이언티스트가 Python의 동적 타입 시스템을 이해하지 못하거나 Spark의 모든 Collection에 대한 이해가 부족할 경우, Spark를 이용하는데 더 어려움을 겪을 수 있다는 점이다.


  마지막으로, 2015년 당시에 Spark를 이용할 때의 겪을 수 있는 기술적 제약 사항 3가지를 말해준다. Spark에서 Scala Runtime을 재사용하는 것에 대한 문제, Scala 코드에서 Closure를 사용할 때의 문제, 그리고 staging에서의 문제를 언급한다. 현재 Spark 2.0에서 이 부분들이 개선되었는지 문서를 통해 확인해봐야 겠다.

'컴퓨터공학 > Java Scala' 카테고리의 다른 글

Akka project using shadow gradle plugin  (0) 2017.04.23
스칼라 메모이제이션 구현  (0) 2016.12.03
Python glob.glob() to Scala  (0) 2016.11.24
Deadlock에 빠지지 않는 다양한 방법 ver. Java  (0) 2016.11.20
Java vs C++  (0) 2013.01.05

+ Recent posts