1. 程式人生 > >transformation和action的運算元簡介

transformation和action的運算元簡介

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通常用於更新一個累加器變數,或者和外部儲存系統做互動