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