transformation算子
map(func)
返回一個新的分佈式數據集,由每個原元素經過func函數處理後的新元素組成
filter(func)
返回一個新的數據集,由經過func函數處理後返回值爲true的原元素組成
flatMap(func)
類似於map,但是每一個輸入元素,會被映射爲0個或多個輸出元素,(因此,func函數的返回值是一個seq,而不是單一元素)
mapPartitions(func)
類似於map,對RDD的每個分區起作用,在類型爲T的RDD上運行時,func的函數類型必須是Iterator[T]=>Iterator[U]
sample(withReplacement,fraction,seed)
根據給定的隨機種子seed,隨機抽樣出數量爲fraction的數據
pipe(command,[envVars])
通過管道的方式對RDD的每個分區使用shell命令進行操作,返回對應的結果
union(otherDataSet)
返回一個新的數據集,由原數據集合參數聯合而成
intersection(otherDataset)
求兩個RDD的交集
distinct([numtasks])
返回一個包含源數據集中所有不重複元素的i新數據集
groupByKey([numtasks])
在一個由(K,v)對組成的數據集上調用,返回一個(K,Seq[V])對組成的數據集。默認情況下,輸出結果的並行度依賴於父RDD的分區數目,如果想要對key進行聚合的話,使用reduceByKey或者combineByKey會有更好的性能
reduceByKey(func,[numTasks])
在一個(K,V)對的數據集上使用,返回一個(K,V)對的數據集,key相同的值,都被使用指定的reduce函數聚合到一起,reduce任務的個數是可以通過第二個可選參數來配置的
sortByKey([ascending],[numTasks])
在類型爲(K,V)的數據集上調用,返回以K爲鍵進行排序的(K,V)對數據集,升序或者降序有boolean型的ascending參數決定
join(otherDataset,[numTasks])
在類型爲(K,V)和(K,W)類型的數據集上調用,返回一個(K,(V,W))對,每個key中的所有元素都在一起的數據集
cogroup(otherDataset,[numTasks])
在類型爲(K,V)和(K,W)類型的數據集上調用,返回一個數據集,組成元素爲(K,Iterable[V],Iterable[W]) tuples
cartesian(otherDataset)
笛卡爾積,但在數據集T和U上調用時,返回一個(T,U)對的數據集,所有元素交互進行笛卡爾積
coalesce(numPartitions)
對RDD中的分區減少指定的數目,通常在過濾完一個大的數據集之後進行此操作
repartition(numpartitions)
將RDD中所有records平均劃分到numparitions個partition中
action算子
reduce(func)
通過函數func聚集數據集中的所有元素,這個函數必須是關聯性的,確保可以被正確的併發執行
collect()
在driver的程序中,以數組的形式,返回數據集的所有元素,這通常會在使用filter或者其它操作後,返回一個足夠小的數據子集再使用
count()
返回數據集的元素個數
first()
返回數據集的第一個元素(類似於take(1))
take(n)
返回一個數組,由數據集的前n個元素組成。注意此操作目前並非並行執行的,而是driver程序所在機器
takeSample(withReplacement,num,seed)
返回一個數組,在數據集中隨機採樣num個元素組成,可以選擇是否用隨機數替換不足的部分,seed用於指定的隨機數生成器種子
saveAsTextFile(path)
將數據集的元素,以textfile的形式保存到本地文件系統hdfs或者任何其他Hadoop支持的文件系統,spark將會調用每個元素的toString方法,並將它轉換爲文件中的一行文本
takeOrderd(n,[ordering])
排序後的limit(n)
saveAsSequenceFile(path)
將數據集的元素,以sequencefile的格式保存到指定的目錄下,本地系統,hdfs或者任何其他hadoop支持的文件系統,RDD的元素必須由key-value對組成。並都實現了hadoop的writable接口或隱式可以轉換爲writable
saveAsObjectFile(path)
使用Java的序列化方法保存到本地文件,可以被sparkContext.objectFile()加載
countByKey()
對(K,V)類型的RDD有效,返回一個(K,Int)對的map,表示每一個可以對應的元素個數
foreach(func)
在數據集的每一個元素上,運行函數func,t通常用於更新一個累加器變量,或者和外部存儲系統做交互