IDEAでJava Lambdaを使用してWordCountプログラムを作成する
プロジェクトの作成の詳細はブログを参照してください:IDEAでScalaでWordCountプログラムを作成し、クラスタにアップロードして実行します.https://blog.csdn.net/weixin_43866709/article/details/88599701
コードは次のとおりです.
次にjarパケットに打ってsparkクラスタにアップロードして実行します.実行コマンドは次のとおりです.
spark-submit//sparkクラスタにタスクコマンドをコミット-masterspark://L1:7077//–master sparkクラスタ上のmasterホストとポートの指定–class com.baidu.spark.javaLambdaWordCount//プログラムのクラス名の指定(プログラム実行のエントリ)/home/hadoop/original-SparkTest 1-1.0-SNAPSHOT-javaLambda.jar//jarパッケージの場所を指定hdfs://L1:9000/aaa//HDFS上のnamenodeのホスト名とポート、およびファイルの場所の指定hdfs://L1:9000/aaajavaLambdaOut//プログラム実行結果格納場所の指定
コードは次のとおりです.
package cn.edu360.spark;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import scala.Tuple2;
import java.util.Arrays;
public class javaLambdaWordCount {
public static void main(String[] args){
SparkConf conf = new SparkConf().setAppName("javaLambdaWordCount");
// sparkContext
JavaSparkContext jsc = new JavaSparkContext(conf);
//
JavaRDD lines = jsc.textFile(args[0]);
//
JavaRDD words = lines.flatMap(line -> Arrays.asList(line.split(" ")).iterator());
// 1
JavaPairRDD wordAndOne = words.mapToPair(w -> new Tuple2<>(w, 1));
//
JavaPairRDD reduced = wordAndOne.reduceByKey((m, n) -> m + n);
//
JavaPairRDD swaped = reduced.mapToPair(tp -> tp.swap());
//
JavaPairRDD sorted = swaped.sortByKey(false);
//
JavaPairRDD result = sorted.mapToPair(tp -> tp.swap());
// hdfs
result.saveAsTextFile(args[1]);
//
jsc.stop();
}
}
次にjarパケットに打ってsparkクラスタにアップロードして実行します.実行コマンドは次のとおりです.
spark-submit//sparkクラスタにタスクコマンドをコミット-masterspark://L1:7077//–master sparkクラスタ上のmasterホストとポートの指定–class com.baidu.spark.javaLambdaWordCount//プログラムのクラス名の指定(プログラム実行のエントリ)/home/hadoop/original-SparkTest 1-1.0-SNAPSHOT-javaLambda.jar//jarパッケージの場所を指定hdfs://L1:9000/aaa//HDFS上のnamenodeのホスト名とポート、およびファイルの場所の指定hdfs://L1:9000/aaajavaLambdaOut//プログラム実行結果格納場所の指定