2016-12-05 1 views
1

아파치 스파크를 처음 사용하기 때문에 아파치 스파크에서 mergesort 용 자바 코드를 작성해야합니다.아파치 스파크를 사용하는 Mergesort

SparkConf conf = new SparkConf().setMaster("local").setAppName("Merge Sort App"); 
JavaSparkContext sc = new JavaSparkContext(conf); 

JavaRDD<Integer> input = sc.parallelize(a); // where a is list of Integers 

나는 javaRDD<Integer>에 정수의 로딩 배열 목록을 수행하고있다 :

나는 아파치 스파크와 megersort를 사용하여 정렬하는 정수 요소 목록을 사용해야합니다.

도움이 필요하십니까?

+0

왜 병합 정렬입니까? 진짜 이유가 있니? 그렇지 않다면, 그냥 sortBy 자바 함수 –

+0

으로 갈 수 있습니다. RDD를 정렬해야한다면, 표준'sortBy()'메소드를 사용하는 것이 어떻습니까? 여기 [link] (https://spark.apache.org/docs/2.0.2/api/java/org/apache/spark/api/java/JavaRDD.html)에서 설명을 찾을 수 있습니다. –

+0

또한 정수 목록이 작고 메모리에 적합하면 Spark 사용을 피할 수 있습니다. –

답변

0

당신은 유형 Integer의 두 목록에 소요 Integer 's의 하나의 정렬 된 목록을 출력하는 기능 merge를 정의 할 수 있습니다. 그런 다음 input.reduce(<classname>::merge)으로 전화하십시오.

물론 이것은 개별 요소 대신 Integer의 RDD 보류 목록을 보유한 경우에 따라 다릅니다. 단일 요소로 재귀하는 병합 정렬의 첫 번째 부분을 생각해보십시오. Integer을 취하는 toList 메소드를 작성하고 그 요소가 포함 된 List을 출력하여이를 수행 할 수 있습니다. 그러면 input.map(<classname>::toList).reduce(<classname>::merge)을 할 수 있습니다.