persist(): 把數據以序列化的形式緩存在JVM的堆空間中; cache(): 與使用預設存儲級別調用persist()是一樣的; collect(): 只有當你的整個數據集能在單台機器的記憶體中放得下時,才能使用collect(),因此,collect() 不能用在大規模數據集上;把RDD 篩 ...
persist(): 把數據以序列化的形式緩存在JVM的堆空間中;
cache(): 與使用預設存儲級別調用persist()是一樣的;
collect(): 只有當你的整個數據集能在單台機器的記憶體中放得下時,才能使用collect(),因此,collect() 不能用在大規模數據集上;把RDD 篩選到一個很小的規模,並且你想在本地處理這些數據時;
轉化操作:
map()
filter()
flatMap()
distinct()
union()
intersection() 需要數據混洗
subtract() 需要數據混洗
cartesian() 笛卡爾積
行動操作:
reduce() reduce()與fold()方法是對同種元素類型數據的RDD進行操作,即必須同構。其返回值返回一個同樣類型的新元素;
fold() fold()與reduce()類似,接收與reduce接收的函數簽名相同的函數,另外再加上一個初始值作為第一次調用的結果;
aggregate() 可以對兩個不同類型的元素進行聚合,即支持異構;
take() 返回RDD 中的n 個元素,並且嘗試只訪問儘量少的分區,因此該操作會得到一個不均衡的集合;
top() 使用數據的預設順序,但我們也可以提供自己的比較函數,來提取前幾個元素;
takeSample(withReplacement, num,seed) 可以讓我們從數據中獲取一個採樣,並指定是否替換。
鍵值對操作:
reduceByKey():合併相同的鍵;
foldByKey():
combineByKey():基於鍵進行聚合;
mapValues():對每個值應用一個函數;
flatMapValues():對每個值應用一個返回迭代器的函數;
keys() values()
subtractByKey():刪掉RDD中鍵與other RDD中的鍵相同的元素;
sortByKey():返回一個依據鍵排序的rdd;
partitionBy():
repartition():把數據通過網路進行混洗,並創建出新的分區集合;
coalesce():優化版的repartiton()
groupByKey():依據鍵是否相同進行分組;
groupBy():可以用於未成對的數據上,也可以根據除鍵相同之外的條件進行分組;
cogroup():將兩個RDD 中擁有相同鍵的數據分組到一起;可應用於三個及以上的RDD;值的類型不必相同;
join() rightOuterJoin() leftOuterJoin()
collectAsMap()