可以指代集合中的每乙個元素
// 篩選出可以被2整除的數
a.filter
(_%2==0
).map(
2*_)
注:在reducebykey中指代的是鍵值對中的值
參考:將某些經過了複雜計算得到的rdd存入快取中,避免下次呼叫時重複計算
// 將userinfomation這個rdd儲存到快取中
userinfomation.
cache
()
sortby可以很方便地定義按照那個元素排序
// 按照集合x中的某個元素排序
sortby
(x=>x._2._1,
false
)
sortbykey是按照鍵排序,雖然可以重寫排序方法但有點麻煩
// false是逆序
sortbykey
(false
)
陣列:
val arr =
array(1
,2,3
,4,5
,6)print(x
(0))
元組:
val tuple =
("hadoop"
,3.1415,45
,'char'
)print
(x._1)
// collect()返回的是array[t]型別
// 下面整體返回的是hashset[string]型別
hashset()
++ targetqqusers.
map(_._1)
.collect
()
如果我們要在分布式計算裡面分發大物件,例如:字典,集合,黑白名單等,這個都會由driver端進行分發,一般來講,如果這個變數不是
廣播變數,那麼每個task就會分發乙份,這在task數目十分多的情況下driver的頻寬會成為系統的瓶頸,而且會大量消耗task伺服器上的資源,如果將這個變數宣告為廣播變數,那麼只是每個executor擁有乙份,這個executor啟動的task會共享這個變數,節省了通訊的成本和伺服器的資源。
廣播變數:實際上就是executor端用到了driver端的變數
如果在executor端你使用到了driver端的廣播變數,如果不使用廣播變數,在每個executor中有多少task就有多少變數副本。
注意:
不能將rdd廣播出去,rdd不存資料,可以將rdd的結果廣播出去,rdd.collect()
廣播變數只能在driver定義,在executor端不能修改廣播變數的值。
val a =
3val broadcast = sc.
broadcast
(a)
val c = broadcast.value
參考: Spark RDD操作 Python 總結
map func 將原rdd中每個元素代入帶入func 1 23 rdd sc.parallelize 1,2,3 rdd.map lambda x x x collect 1,4,9 filter func 返回包含所有在func中結果為true 1 23 rdd sc.parallelize 1...
spark RDD基礎裝換操作 zip操作
將數字1 3組成的rdd,與字母a到c組成的rdd應用拉鍊 zip 操作,合併到乙個新的rdd中。scala val rdddata1 sc.parallelize 1 to 10,5 rdddata1 org.apache.spark.rdd.rdd int parallelcollectionr...
spark RDD程式設計
rdd就是乙個不可變的分布式物件集合。建立rdd 1 讀取乙個外部資料集 sparkcontext.textfile 2 在驅動器程式中對乙個集合進行並行化。rdd 操 作 1 轉 化 操 作 transformation 會由乙個 rdd 生成乙個新的 rdd。2 行 動 操 作 action 會...