Spark學習之鍵值對(pair RDD)操作

2021-08-04 19:17:11 字數 1654 閱讀 6175

1)讀取本身就是鍵值對的資料

2)乙個普通的rdd通過map()轉為pair rdd,傳遞的函式需要返回鍵值對。

python中使用第乙個單詞作為鍵建立出乙個pair rdd

pairs = lines.amp(lambda x: (x.split(" ")[0],x))
scala中使用第乙個單詞作為鍵建立出乙個pair rdd
val pairs = lines.map(x=>(x.split(" ")(0),x))
pair rdd可以使用所有標準rdd上的可能的轉化操作,還有其他如下

reducebykey(func) 合併具有相同鍵的值

groupbyke() 對具有相同鍵的值進行分組

combinebykey( 使用不同的的返回型別合併具有相同鍵的值

createcombiner,

mergevalue,

mergcombiners,

partitioner)

mapvalues(func) 對pair rdd中的每個值應用乙個函式而不改變鍵

flatmapvalues(func) 對pair rdd中的每個值應用乙個返回迭代器的函式,

然後對返回的每個元素都生成乙個對應原鍵的鍵值對記錄。

通常用於符號化。

keys() 返回乙個僅包含鍵的rdd

values() 返回乙個僅包含值的rdd

sortbykey() 返回乙個根據鍵排序的rdd

subtractbykey           刪掉rdd中鍵與other rdd中的鍵相同的元素

join 對兩個rdd進行內連線

rightouterjoin 對兩個rdd進行連線操作,確保第乙個rdd的鍵必須存在(右外連線)

leftouterjoin 對兩個rdd進行連線操作,確保第二個rdd的鍵必須存在(左外連線)

cogroup 將兩個rdd中擁有相同鍵的資料分組到一起

countbykey()            對每個鍵對應的元素分別計數

collectasmap() 將結果以對映表的形式返回,以便查詢

lookup(key) 返回給定鍵對應的所有值

控制資料分布以獲得最少的網路傳輸可以極大地提公升整體效能。

只有當資料集多次在諸如連這種基於鍵的操作中使用時,分割槽才有幫助。

scala自定義分割槽方式

val sc = new sparkcontext(...)

val userdata = sc.sequencefile(userid,userinfo)("hdfs://...")

.partitionby(new hashpartitioner(100))

.persist()

Spark學習筆記 鍵值對操作

鍵值對 rdd是 spark 中許多操作所需要的常見資料型別 鍵值對 rdd 通常用來進行聚合計算。我們一般要先通過一些初始etl 抽取 轉化 裝載 操作來將資料轉化為鍵值對形式。spark 為包含鍵值對型別的 rdd 提供了一些專有的操作。1.建立pair rdd val input sc.par...

Spark學習筆記 (3 鍵值對操作 )

spark學習筆記3 鍵值對操作 鍵值對rdd通常用來進行聚合計算,spark為包含鍵值對型別的rdd提供了一些專有的操作spark中建立pair rdd的方法 1 儲存鍵值對的資料格式會在讀取時直接返回由其鍵值對資料組成的pair rdd 2 還可以使用map 函式將乙個普通的rdd轉為pair ...

spark鍵值對操作 一

鍵值對rdd也叫做pair rdd 把乙個普通 rdd轉換為pair rdd的時候使用map 函式來實現 使用第乙個單詞作為乙個鍵,建立乙個pair rdd pairs lines.map lambda x x.split 0 x reducebykey func 合併具有相同鍵的值 rdd.red...