Javaは、スパーク、共通のオペレータ再分割の息子を達成します

輸入org.apache.spark.SparkConf 
輸入org.apache.spark.api.java.JavaRDD ;
輸入org.apache.spark.api.java.JavaSparkContext ;
輸入org.apache.spark.api.java.function.Function2
輸入org.apache.spark.api.java.function.VoidFunction

輸入はjava.util.ArrayList ;
輸入java.util.Arrays
インポートするjava.util.Iterator ;
輸入はjava.util.List ;

/ **
*パーティションを再分割算子:
*增加分区、使用シャッフル操作
* /
パブリッククラスRepartitionsOperator {

公共の静的な無効メイン(文字列[]引数){
SparkConf CONF = 新しいSparkConf()setMaster(。。 "ローカル")setAppName("パーティションを再分割")
JavaSparkContext SC = 新しいJavaSparkContext(CONF)
一覧<文字列>名前=配列。asList("W1" "W2" "W3" "W4" "W5" "W6")

JavaRDDの<string> nameRdd = sc.parallelize(名前2)

JavaRDDの<string> namefristRdd = nameRdd.mapPartitionsWithIndex(新しい機能2 <整数、イテレータの<string> イテレータ<文字列>>(){
@Override 公共イテレータの<string>


一覧<文字列>リスト= 新しいArrayListを<>();
一方、(iterator.hasNext()){
list.add("1 [" +インデックス+ "]" + iterator.next())
}
)(list.iteratorを返します
}
} 、TRUE) //增加分区JavaRDDの<string> TEMP = namefristRdd.repartition(5) JavaRDD <文字列> nameseconedRdd = temp.mapPartitionsWithIndex(新機能2 <Integer型、イテレータ<文字列> 、イテレータ<文字列>>(){ @Override 公共イテレータ<文字列> コール(整数インデックス、イテレータ<文字列>イテレータは)例外{スローリスト<文字列>







;
一方(iterator.hasNext()){
List.add("2 [" +インデックス+ "]" + Iterator.next());
}
戻りlist.iterator();
}
} 、falseに);


nameseconedRdd.foreach(VoidFunction新しい新規の<string>(){
@Override 公共ボイドコール(文字列s)は例外{スロー。システムerr.println(S)を; } }); } } 主走査Jiaruボー遊星知識で図マイクロチャネルの二次元コード、もっとを取得しますどのくらいのデータ、人工知能、アルゴリズム、およびその他の学習教材を無料ああ!











おすすめ

転載: www.cnblogs.com/guokai870510826/p/11635197.html