- SparkContext:通往Spark集群的入口點,用于創建RDD和廣播變量等
- RDD:彈性分布式數據集,Spark應用程序的核心抽象
- Transformation:操作RDD生成新的RDD,如map、filter等
- Action:對RDD的操作,如count、collect等
args,MAIN函數中args參數,args[] 在命令行運行時候輸入的參數,因為參數可以為多個,所以要用數組來存
- 環境:Spark Standalone模式
- 目標:計算文本文件中所有單詞的出現頻率
- 輸入文件:inputFile.txt
- 輸出文件:outputFile.txt
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.JavaRDD;
import java.util.Arrays;
public class WordCount {
public static void main(String[] args) {
SparkConf conf = new SparkConf().setAppName("WordCount").setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD<String> textFile = sc.textFile(args[0]);
JavaRDD<String> words = textFile.flatMap(line -> Arrays.asList(line.split(" ")).iterator());
JavaRDD<String> filteredWords = words.filter(word -> word.length() > 0);
JavaRDD<String> keyedWords = filteredWords.mapToPair(word -> new Tuple2(word, 1)).reduceByKey((x, y) -> x + y);
keyedWords.saveAsTextFile(args[1]);
sc.close();
}
}
- spark-submit:Spark的提交腳本
- main-class:包含 "main" 方法的類的名稱
- path-to-jar:包含 "main" 方法的類所在的JAR文件的路徑
- application-arguments:應用程序參數
將應用程序JAR文件提交到Spark集群
spark-submit --class <main_class> --master yarn --deploy-mode client <your_spark_app.jar> --input <input_path> --output <output_path>