輸入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ボー遊星知識で図マイクロチャネルの二次元コード、もっとを取得しますどのくらいのデータ、人工知能、アルゴリズム、およびその他の学習教材を無料ああ!
Javaは、スパーク、共通のオペレータ再分割の息子を達成します
おすすめ
転載: www.cnblogs.com/guokai870510826/p/11635197.html
おすすめ
ランキング