2016-12-05 4 views
1

私はApache Sparkを初めて使用しています。私はApacheのsparkでmergesort用のJavaコードを作成する必要があります。apache-sparkを使用した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>に整数のロード配列リストで行われています:

私はapacheの火花でmegersortを使用してソートする整数要素のリストを使用する必要があります。

助けてください。

+0

なぜmerge-sortですか?本当の理由はありますか?そうでない場合は、sortBy java関数 –

+0

と一緒に行くことができます。RDDをソートする必要がある場合は、標準の 'sortBy()'メソッドを使うのはどうですか? [link](https://spark.apache.org/docs/2.0.2/api/java/org/apache/spark/api/java/JavaRDD.html)は、その説明があります。 –

+0

また、Integersのリストが小さく、メモリに収まる場合は、Sparkの使用を避けることができます。 –

答えて

0

あなたはタイプIntegerの二つのリストを取り込み、Integer年代の単一ソートされたリストを出力する関数mergeを定義することができます。その後、input.reduce(<classname>::merge)に電話してください。

もちろん、個々の要素の代わりにIntegerのRDD保留リストを持っているかどうかによって異なります。マージソートの最初の部分は、単一の要素に再帰する場所を考えてください。これを行うには、IntegerのメソッドtoListを作成し、その要素を含むListを出力します。次に、input.map(<classname>::toList).reduce(<classname>::merge)を実行してください。