스칼라를 기반으로 하는 Spark는 그야말로 확 끌리는 도구 아닐까 싶다. 일단 무작정 다운로드를 해보자.
약 200메가 정도 되니, 자신의 하둡 설치 버젼에 따라 잘 골라서 다운로드하면 된다.
https://spark.apache.org/downloads.html
이제 압축을 풀어주고 바로 이용해볼수 있다.
tar -xvfz spark-1.3.1.tgz
스파크에는 다음 기능이 있다.
RDD – Resilient Distributed Datasets
Transformations & Actions - RDD에는 상기의 두가지 연산이 있음 (기존의 Reduce보다 제공하는 연산이 굉장히 많다.) RAM에도 읽기만 가능하게 만들어서, fault-tolerant & efficient한 램 스토리지를 만들었다고 한다. 그렇게 해서 나온것이 바로 Spark. 스파크는 다음과 같은 과정으로 쉽게 시작할수 있다. 아무래도, 여러가지 컨셉상 맞는 프로그래밍 언어는 Scala라고 생각하여, 스칼라로 시작한다.
일단 다음의 명령어로, 스파크를 시작해볼수 있다.
./bin/spark-shell |
이제 scala> 와 같은 콘솔이 뜨면 바로 작업하면 된다.
HDFS 파일 (Hadoop InputFormates) 로 만들어질수도 있는데, README파일을 가지고 다음과 같이 변수로 끌어올수 있다.
Val textFile = sc.textFile(“README.md”) |
이제 이것을 바로 분석해 볼수있다.
textFile.count() // ß 숫자세기 textFile.first() //ß 첫번째 아이템 |
심플한 스칼라 앱.
여기서부터는 훨씬 자바보다 쉽게 프로그래밍 가능합니다.
package counting
import org.apache.spark.SparkConf import org.apache.spark.SparkContext
object Test { def main(args: Array[String]): Unit = { val logFile = "YOUR_SPARK_HOME/README.md" // Should be some file on your system val conf = new SparkConf().setAppName("Simple Application") val sc = new SparkContext(conf) val logData = sc.textFile(logFile, 2).cache() val numAs = logData.filter(line => line.contains("a")).count() val numBs = logData.filter(line => line.contains("b")).count() println("Lines with a: %s, Lines with b: %s".format(numAs, numBs)) } } |
솔좀 안좋은게 버전문제로 약간 문제가 생길수 있다. 2.10 버전과 2.11버전의 문제다. 따라서 build path에서 버전을 좀 설정해주어야 함.
자 이제, 이거 제대로 한번 컴파일 해보아야 한다. 다음과 같은 명령어는 먹히는것으로 기록되었다.
./bin/spark-submit --class "counting.Test" --master local[4] scalaTest.jar |
--master local[4] 는 생략해도 되는것으로 보인다.
패키지 이름을 잘 써주어야 한다.
'소프트웨어 개발 > Scala - Functional' 카테고리의 다른 글
spark-scala 를 이용한 wordcount 예제 (3) | 2015.05.31 |
---|---|
스칼라 flatmap 사용법 (0) | 2015.05.31 |
윈도우 - 스칼라에서 네이티브 라이브러리 사용하기 (0) | 2015.05.22 |
스칼라 OpenCL 라이브러리, 스칼라 C코드 라이브러리 (0) | 2015.05.22 |
스칼라에서 DLL 라이브러리 이용하기 (0) | 2015.05.16 |