RDD的Actions算子
- collect:把rdd中所有元素返回到一个数组,返回到driver端的memory中。
如非要查看rdd中的数据:取出部分数据,或把rdd输出到文件系统。 - foreach:
rdd.foreach(println)
rdd.foreachPartition(partition => partition.map(println)) //没有输出,输出在每个executor。
思考:sortBy是全局排序吗?是。
rdd. sortBy(_._2,false). foreach(println) //虽然sortBy是全局排序,但由于不止一个分区,foreach输出的时候分区的先后顺序随机,又把全局排序后的数据打乱了。 - rdd.count() //元素的个数
- rdd.reduce(_+_) //两两操作
- rdd.first() //底层调用的是take方法
rdd.take(2) //返回头两个元素的数组
rdd.top(2) //底层调用的是takeOrdered方法。
top是从大到小排序取值,takeOrdered是从小到大排序取值。 - rdd.zipWithIndex().countByKey() //元素和index构成一个个元组,index在后。countByKey是action算子,统计key的次数
rdd.zipWithIndex().collectAsMap() //返回的是元素和index的Map对。
spark组件详解
官网地址:http://spark.apache.org/docs/latest/cluster-overview.html
注意:
一个application包含1到n个job(spark-shell也是一个application);
一个job包含1到n个stage;
一个stage包含1到n个task,task与partition一一对应,而partition又与并行度一一对应。