核心
wordcount流程详细讲解
有一份这样的数据
hello xlucas hello hadoop
hello hadoop
hello spark
hello kafka
最后的结果是这样的
hello:5
hadoop:2
spark:1
xlucas:1
kafka:1
那么这里spark主要做了哪些事情?
我们先从textFile可以看到这里调用了HadoopFile
从HadoopFile这里我们可以看到,创建了一个HadoopRDD的实例
在去掉Key的时候会做Map操作,这个map会返回 一个MapPartitionsRDD
这里的flatMap也会返回一个MapPartitionsRDD
在做reduceByKey的时候,其实调用了combineByKeyWithClassTag
我们可以看到combineByKeyWithClassTag其实返回了一个shuffledRDD
我们可以看到在shuffledRDD最后还做了一个MapPartitionsRDD的操作,其实这一步主要做了一次数据整理,在操作之前将文件的key去掉了,这一步将文件的key加上写回到HDFS等操作
整个流程图是这样的: