Spark 기반의 Wordcount 예제 수행하기

Reading time ~2 minutes

이 글은 Spark 기반의 Wordcount Application을 작성하고, 그것을 YARN을 통해 deploy 하는 과정에 대한 설명입니다.

WARNING

이 글은 최신버전을 기준으로 설명된 글이 아닙니다. 최신 버전을 대상으로 하였을 때와 설치 과정 혹은 출력 결과가 다를 수 있습니다.


Environment


Dependency

pom.xml에 다음과 같은 dependency를 추가합니다.

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.10</artifactId>
    <version>1.1.0</version>
</dependency>


Wordcount Example

다음과 같은 형태로 wordcount 프로그램을 작성합니다.

//Create spark context
SparkConf conf = new SparkConf().setAppName("Spark Word-count").setMaster("yarn-cluster");
JavaSparkContext context = new JavaSparkContext(conf);

//Split using space
JavaRDD<String> lines = context.textFile(INPUT_PATH);
JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {
    @Override
    public Iterable<String> call(String s) throws Exception {
        return Arrays.asList(s.split(" "));
    }
});

//Generate count of word
JavaPairRDD<String, Integer> onesOfWord = words.mapToPair(new PairFunction<String, String, Integer>() {
    @Override
    public Tuple2<String, Integer> call(String s) throws Exception {
        return new Tuple2<String, Integer>(s, 1);
    }
});

//Combine the count.
JavaPairRDD<String, Integer> wordCount = onesOfWord.reduceByKey(new Function2<Integer, Integer, Integer>() {
    @Override
    public Integer call(Integer integer, Integer integer2) throws Exception {
        return integer + integer2;
    }
});

//Save as text file.
wordCount.saveAsTextFile(OUTPUT_PATH);

context.stop();

전체 소스코드는 github page에 있습니다.


Run Spark Application

maven을 이용하여 프로젝트를 패키징 합니다.

$ mvn package

다음과 같은 명령어를 이용하여 작성한 Wordcount application을 YARN에 submit 합니다.

$ spark-submit --class 패키지명.클래스명 --master yarn-cluster Package된Jar파일.jar

Yes24 책 추천 알고리즘, 어떻게 구현했나

얼마전 한국 정보화 진흥원이 관리하는 [개방형 문제해결 플랫폼](http://crowd.kbig.kr)에 올라온 Yes24 도서 추천 알고리즘 대회가 종료되었다.총 230여명이 참여하였고, 25팀이 최종 결과물을 제출한 대회였다. 이 대회에서 친...… Continue reading