Spark WordCount运行原理及其详细执行过程

Spark WordCount运行原理

1、WordCount执行流程图

在这里插入图片描述

2、Spark WordCount代码

	//创建SparkContext
    val conf = new SparkConf().setAppName("WordCount").setMaster("local[*]")
    val sc = new SparkContext(conf)
    //读取文件内容,也可以直接读取本地文件
    val lines = sc.textFile("hdfs://...")
    //词频统计并输出结果
    val words = lines.flatMap(x=>x.split(" "))
    val pairs = words.map(x=>(x,1))
    val wordCounts = pairs.reduceByKey(_+_)
    wordCounts.foreach(println)
    //以上步骤可简写为:lines.flatMap(x=>x.split(" ")).map(x=>(x,1)).reduceByKey(_+_).foreach(println)

代码解析:

  • 创建Spark入口
  • 读取文件创建RDD
  • 词频统计
  • 输出结果

3、WordCount执行步骤

(1)创建Spark编程入口SparkContext

(2)读取文件,将文件中的内容保存到RDD

(3)将工作分配到各主机节点

(4)各主机节点对自己分到的任务进行操作,首先进行单词划分,按空格分隔,生成flatMappedRDD

(5)然后将各单词生成Map键值对,输出(Word,1)

(6)然后将不同节点上的单词进行局部统计求和,生成局部WordCountMapPatitionRDD

(7)接着对各节点间进行Shuffle,将各节点间的单词进行词频统计,生成最后的MapPatitionRDD

(8)最后输出结果

猜你喜欢

转载自blog.csdn.net/qq_42578036/article/details/109642157