需求
資料格式如下:
在 spark 中, 其實最終 job3 從邏輯上的計算過程是: job3 = (job1.map).filter, 整個過程是共享記憶體的, 而不需要將中間結果存放在可靠的分布式檔案系統中
/ 線性回歸輸出:全為偶數val points = sc.textfile(...)
.map(...)
.persist(...)
val w = randomvalue
for (i
在這個例子中, 進行了大致 10000 次迭代, 如果在 mapreduce 中實現, 可能需要執行很多 job, 每個 job 之間都要通過 hdfs 共享結果, 熟快熟慢一窺便知
rdd 即是一種資料結構, 同時也提供了上層 api, 同時 rdd 的 api 和 scala 中對集合運算的 api 非常類似, 同樣也都是各種運算元
rdd 的運算元大致分為兩類:
執行 rdd 的時候, 在執行到轉換操作的時候, 並不會立刻執行, 直到遇見了 action 操作, 才會觸發真正的執行, 這個特點叫做 惰性求值
rdd 是乙個分布式計算框架, 所以, 一定是要能夠進行分割槽計算的, 只有分割槽了, 才能利用集群的平行計算能力
同時, rdd 不需要始終被具體化, 也就是說: rdd 中可以沒有資料, 只要有足夠的資訊知道自己是從誰計算得來的就可以, 這是一種非常高效的容錯方式
rdd 的容錯有兩種方式rdd 中的運算元從功能上分為兩大類
rdd 中可以存放各種型別的資料, 那麼對於不同型別的資料, rdd 又可以分為三類
filter
運算元的主要作用是過濾掉不需要的內容
/*filter可以過濾掉資料集中的一部分元素
*/@test
def filter(): unit =
和 map 類似, 但是針對整個分割槽的資料轉換
@test//1.資料生成
//2.資料處理
//3.獲取結果
//1.資料生成
//2.資料處理
//3.獲取結果
因為他是並行運算,所以index會都出來
sample
sample 運算元可以從乙個資料集中抽樣出來一部分, 常用作於減小資料集以保證執行速度, 並且盡可能少規律的損失
引數
@testmapvaluesdef sample(): unit =
mapvalues 只能作用於 key-value 型資料, 和 map 類似, 也是使用函式按照轉換資料, 不同點是 mapvalues 只轉換 key-value 中的 value
@testdef mapvalues(): unit =
Spark筆記三之RDD,運算元
rdd核心概念 resilientdistributed dataset,彈性分布式資料集 1是唯讀的,分割槽記錄的集合物件 2分割槽 partition 是rdd的基本組成單位,其決定了平行計算的粒度。應用程式對rdd的轉換最終都是對其分割槽的轉換。3使用者可以指定rdd的分割槽個數,如果不指定則...
spark學習 RDD程式設計
rdd建立 從從檔案系統中載入資料建立rdd 1.spark採用textfile 從檔案系統中載入資料建立rdd 可以使本地,分布式系統等 2.把檔案的url作為引數 可以是本地檔案系統的位址,分布式檔案系統hdfs的位址等等 從本地檔案中載入資料 sc為系統自動建立的sparkcontext,不用...
Spark學習 RDD程式設計基礎
spark上開發的應用程式都是由乙個driver programe構成,這個所謂的驅動程式在spark集群通過跑main函式來執行各種並行操作。集群上的所有節點進行平行計算需要共同訪問乙個分割槽元素的集合,這就是rdd rdd resilient distributed dataset 彈性分布式資...