本文主要是介绍SparkCore(12):RDD三种API,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、简介
RDD的操作分为三类:transformation、action以及persistent,分别有不同功能,以下做一个详细介绍。
二、RDD三种API
1.tranformation
(1)执行时间:由一个RDD产生一个新的RDD,不会触发job的执行
(2)作用:这个操作是在driver过程中执行的,当有action的操作时,就会把对应的信息发送到excutor上面
(3)常见API
map(),flatMap(),filter(),groupByKey(),reduceBykey(),sortByKey(),join(),coalesce(),mapPartitions(),repartition()
-》map:一次读取一条数据,进行map操作
-》mapPartitions:一次读取一个分区的数据,再进行map操作
2.action
(1)执行时间:触发rdd的job执行提交操作,并将rdd对应的job提交到executor上执行
(2)作用:该类型的API调用的时候,会触发job的执行,并将job的具体执行过程提交到executor上执行,最终的执行结果要不输出到其它文件系统或者返回给driver
(3)常见API
reduce(),collect(),count(),take(),saveAsTextFile(),foreach()
-》foreach:一次读取一条数据,进行打印数据(存储到数据库中)
-》foreachPartition:一次把一个分区中的数据全部取出,一次性打印数据(存储到数据库中)
3.persistent
(1)功能:rdd将数据进行缓存操作或者清除缓存的rdd数据或者数据进行了checkpoint(只在streaming中使用)
(2)常见API
rdd.cache() 数据缓存到内存中
rdd.persist(xxx) 数据缓存到指定级别的存储系统中(内存\内存+磁盘\磁盘)
rdd.unpersist() 清除缓存数据
(3)观察
缓存可以在DAG图中看到小绿点,证明不是从最原始的数据源拿的数据
也可以4040的Storage界面当中看到有缓存的rdd信息,可以看到缓存级别
三、具体实例
1.spark常用RDD算子 汇总(java和scala版本)
2.所有算子实例
这篇关于SparkCore(12):RDD三种API的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!