tranformationRDD
轉換 rdd:
map(func)
返回一個新的RDD,該RDD由每一個輸入元素經過func函數轉換後組成
filter(func)
返回一個新的RDD,該RDD由經過func函數計算後返回值爲true的輸入元素組成
flatMap(func)
類似於map,但是每一個輸入元素可以被映射爲0或多個輸出元素(所以func應該返回一個序列,而不是單一元素)
mapPartitions(func)
類似於map,但獨立地在RDD的每一個分片上運行,因此在類型爲T的RDD上運行時,func的函數類型必須是Iterator[T] => Iterator[U]
mapPartitionsWithIndex(func)
類似於mapPartitions,但func帶有一個整數參數表示分片的索引值,因此在類型爲T的RDD上運行時,func的函數類型必須是
(Int, Interator[T]) => Iterator[U]
union(otherDataset)
對源RDD和參數RDD求並集後返回一個新的RDD
intersection(otherDataset)
對源RDD和參數RDD求交集後返回一個新的RDD
distinct([numTasks]))
對源RDD進行去重後返回一個新的RDD
groupByKey([numTasks])
在一個(K,V)的RDD上調用,返回一個(K, Iterator[V])的RDD
reduceByKey(func, [numTasks])
在一個(K,V)的RDD上調用,返回一個(K,V)的RDD,使用指定的reduce函數,將相同key的值聚合到一起,與groupByKey類似,reduce任務的個數可以通過第二個可選的參數來設置
sortByKey([ascending], [numTasks])
在一個(K,V)的RDD上調用,K必須實現Ordered接口,返回一個按照key進行排序的(K,V)的RDD
sortBy(func,[ascending], [numTasks])
與sortByKey類似,但是更靈活
join(otherDataset, [numTasks])
在類型爲(K,V)和(K,W)的RDD上調用,返回一個相同key對應的所有元素對在一起的(K,(V,W))的RDD
cogroup(otherDataset, [numTasks])
在類型爲(K,V)和(K,W)的RDD上調用,返回一個(K,(Iterable<V>,Iterable<W>))類型的RDD
coalesce(numPartitions)
減少 RDD 的分區數到指定值。
repartition(numPartitions)
重新給 RDD 分區
repartitionAndSortWithinPartitions(partitioner)
重新給 RDD 分區,並且每個分區內以記錄的 key 排序
actionRDD
動作 rdd:
reduce(func)
reduce將RDD中元素前兩個傳給輸入函數,產生一個新的return值,新產生的return值與RDD中下一個元素(第三個元素)組成兩個元素,再被傳給輸入函數,直到最後只有一個值爲止。
collect()
在驅動程序中,以數組的形式返回數據集的所有元素
count()
返回RDD的元素個數
first()
返回RDD的第一個元素(類似於take(1))
take(n)
返回一個由數據集的前n個元素組成的數組
takeOrdered(n, [ordering])
返回自然順序或者自定義順序的前 n 個元素
saveAsTextFile(path)
將數據集的元素以textfile的形式保存到HDFS文件系統或者其他支持的文件系統,對於每個元素,Spark將會調用toString方法,將它裝換爲文件中的文本
saveAsSequenceFile(path)
將數據集中的元素以Hadoop sequencefile的格式保存到指定的目錄下,可以使HDFS或者其他Hadoop支持的文件系統。
saveAsObjectFile(path)
將數據集的元素,以 Java 序列化的方式保存到指定的目錄下
countByKey()
針對(K,V)類型的RDD,返回一個(K,Int)的map,表示每一個key對應的元素個數。
foreach(func)
在數據集的每一個元素上,運行函數func
foreachPartition(func)
在數據集的每一個分區上,運行函數func