Spark的transformation和action算子簡介

transformation算子

map(func)

返回一個新的分佈式數據集,由每一個原元素通過func函數處理後的新元素組成 shell

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的數據 ide

pipe(command,[envVars])

經過管道的方式對RDD的每一個分區使用shell命令進行操做,返回對應的結果 函數

union(otherDataSet)

返回一個新的數據集,由原數據集合參數聯合而成 oop

intersection(otherDataset)

求兩個RDD的交集 性能

distinct([numtasks])

返回一個包含源數據集中全部不重複元素的i新數據集 spa

groupByKey([numtasks])

在一個由(K,v)對組成的數據集上調用,返回一個(K,Seq[V])對組成的數據集。默認狀況下,輸出結果的並行度依賴於父RDD的分區數目,若是想要對key進行聚合的話,使用reduceByKey或者combineByKey會有更好的性能orm

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一般用於更新一個累加器變量,或者和外部存儲系統作交互

相關文章
相關標籤/搜索