package date_20250408

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object WCLocalFile {
    def main(args: Array[String]) {
        /**
         * SparkContext 的初始化需要一个SparkConf对象
         * SparkConf包含了Spark集群的配置的各种参数 */
        val conf = new SparkConf().setMaster("local")
          //启动本地化计算，默认1个CPU核数
                                  //.setMaster("local[2]")//启动本地化计算,2个CPU核数
                                  //.setMaster("local[*]")//启动本地化计算,所有CPU核数
                                  .setAppName("Spark-WordCount")
        //设置本程序名称
        //Spark程序的编写都是从SparkContext开始的
        val sc = new SparkContext(conf)
        val data = sc.textFile("spark-lesson/src/main/scala/date_20250408/data/README.md")
        //读取本地文件
        val result: RDD[(String, Int)] = data.flatMap(_.split(" "))
          //下划线是占位符，flatMap是对行操作的方法，对读入的数据进行分割
                                             .map((_, 1))
          //将每一项转换为key-value，数据是key，value是1
                                             .reduceByKey(_ + _)
        //将具有相同key的项相加合并成一个
        //保存结果在本地文件
        result.saveAsTextFile("spark-lesson/out/result")
    }
}