大三寒假學習 spark學習 RDD

2022-09-19 03:48:13 字數 1273 閱讀 2625

設計背景:

許多迭代式演算法(比如機器學習、圖演算法等)和互動式資料探勘工具,共同之處是,不同計算階段之間會重用中間結果

目前的mapreduce框架都是把中間結果寫入到hdfs中,帶來大量的資料複製、磁碟i0和序列化開銷

rdd就是為了滿足這種需求而出現的,它提供了乙個抽象的資料架構

我們不必擔心底層資料的分布式特性,只需將具體的應用邏輯表達為一系列轉換處理

不同rdd之間的轉換操作形成依賴關係,可以實現管道化,避免中間資料儲存

rdd概念:

乙個rdd就是乙個分布式物件集合,本質上是乙個唯讀的分割槽記錄集合,每個rdd可分成多個分割槽,每個分割槽就是乙個資料集片段,並且乙個rdd的不同分割槽可以被儲存到集群中不同的節點上,從而可以在集群中的不同節點上進行平行計算

rdd提供了一種高度受限的共享記憶體模型,即rdd是唯讀的記錄分割槽的集合,不能直接修改,只能基於穩定的物理儲存中的資料集建立rdd,或者通過在其他rdd上執行確定的轉換操作(如map、join和group by)而建立得到新的rdd

rdd操作:

表面上rdd的功能很受限、不夠強大,實際上rdd已經被實踐證明可以高效地表達許多框架的程式設計模型((比如mapreduce、sql、pregel)

rdd提供了一組豐富的操作以支援常見的資料運算,分為「動作」(action)和「轉換」(transformation)兩種型別

rdd提供的轉換介面都非常簡單,都是類似map、filter. groupby、 join等粗粒度的資料轉換操作,而不是針對某個資料項的細粒度修改(不適合網頁爬蟲)

spark用scala語言實現了rdd的apl,程式設計師可以通過呼叫api實現對rdd的各種操作

rdd的執行過程:

rdd讀入外部資料來源進行建立

rdd經過一系列的轉換(transformation)操作每一次都會產生不同的rdd供給下乙個轉換操作使用

最後乙個rdd經過「動作」操作進行轉換並輸出到外部資料來源

這一系列處理稱為乙個lineage(血緣關係),即dag拓撲排序的結果

優點:惰性呼叫、管道化、避免同步等待、不需要儲存中間結果、每次操作變得簡單

rdd特性:

spark採用rdd以後能夠實現高效計算的原因:

現有容錯機制:資料複製或者記錄日誌

rdd:血緣關係、重新計算丟失分割槽、無需回滾系統、重算過程在不同節點之間並行、只記錄粗粒度的操作

大三寒假學習 spark學習 Scala控制結構

if條件表示式 支援巢狀 有一點與j a不同的是,scala中的if表示式的值可以賦值給變數 while迴圈 與j a的while一摸一樣沒有太大的區別 for迴圈 基本語法 for 變數 變數 守衛 guard 的表示式 過濾出一些滿足條件的結果。基本語法 for 變數 if 條件表示式 語句塊 ...

大三寒假學習 spark學習 函式定義 佔位符語法

為了讓函式字面量更加簡潔,我們可以使用下劃線作為乙個或多個引數的佔位符只要每個引數在函式字面量內僅出現一次 下面給出乙個示例 由於執行結果可以看到 x x 0與 0是等價的 當函式的每個引數在函式字面量內僅出現一次,可以省略 並用下劃線 作為引數的佔位符來簡化函式字面量的表示,第乙個下劃線代表第乙個...

大三寒假學習進度(6)

啟用函式輸出值的範圍 常見的啟用函式 優點 輸出對映在 0,1 之間,單調連續,輸出範圍有限,優化穩定,可用作輸出層 求導容易。缺點 易造成梯度消失 輸出非0均值,收斂慢 冪運算複雜,訓練時間長。優點 比sigmoid函式收斂速度更快。相比sigmoid函式,其輸出以0為中心。缺點 易造成梯度消失 ...