Page 18 -
P. 18
1.1.3.1 사용 편의성
스파크 API는 맵리듀스 API보다 훨씬 사용하기가 쉽다. 부록 B에 수록된 전통적인 word-
count 예제를 맵리듀스로 구현하려면 클래스를 세 개 정의해야 한다. 각각 작업을 셋업하는 메인
클래스와 매퍼(mapper) 클래스, 리듀서(reducer) 클래스다. 각 클래스별로 대략 열 줄 분량의 코드
를 작성해야 한다.
반면 스파크에서는 동일한 word-count 문제를 다음과 같이 짤막한 스칼라 코드로 완성할 수
있다.
val spark = SparkSession.builder().appName("Spark wordcount")
val file = spark.sparkContext.textFile("hdfs:////.")
val counts = file.flatMap(line => line.split(" "))
.map(word => (word, 1)).countByKey()
counts.saveAsTextFile("hdfs:////.")
그림 1-1은 맵리듀스 word-count와 스파크 word-count를 비교한 것이다.
그림 1-1 스파크의 간결함과 단순함을 보여 주는 word-count 프로그램 예제(왼쪽은 하둡 맵리듀스 프레임워크로 구현한 word-
count 프로그램이고, 오른쪽은 스칼라로 구현한 스파크 word-count 프로그램이다.)
ݗܻٓझ XPSE DPVOU झ XPSE DPVOU
ݫੋ ېझ
ݒಌ
ܻٓࢲ
034
spark_08.indd 34 2018-05-08 오후 6:26:11