最近又看到spark了,看看电脑上很早以前的集群感觉好多都忘记了,故复习一波。
就先从对程序员来说spark的核心RDD走起。
这篇文章讲的很详细 Spark学习之路 (三)Spark之RDD - 扎心了,老铁 - 博客园
总结
一:RDD可以理解为java里面的方法,函数。
spark集群中的每一个executor(机器)中的每一个task(thread)会处理一个RDD。
二:常用RDD
Transformation:map filter flatMap union groupByKey reduceByKey sortByKey
Action:reduce collect count countByKey
三:worldcount(scala)
val conf =new SparkConf()
val sc =new SparkContext(conf)
sc.textFile("E:\\hello.txt").flatMap(_.split(",")).map((_,1)).reduceByKey(_ + _);
四:依赖关系
窄依赖:父对子 为多对一或者一对一
宽依赖:父对子 为多对多
之所以划分依赖是为了stage(阶段,步骤)做铺垫,将一条线上连续关联的窄依赖作为一个stage,单独的一个宽依赖作为一个stage。整个流程的运行好比一个流水线的工作,每一个RDD对应一个task.