Spark效能優化第五季

2021-07-11 20:22:02 字數 1770 閱讀 7636

一:效能優化之資料本地性

3,如果資料是process_local,但是此時並沒有空閒的core來執行我們的task,此時task就要等待,例如等待3000ms,3000ms內如果能夠執行待執行的task則直接執行,如果超過了3000ms,此時資料本地性就要退而求其次採用node_local,同樣的道理node_local也會等待的超時時間,以此類推…

4,如何配置locality呢?可以統一採用spark.locality.wait來設定(例如設定5000ms),當然你可以分別設定spark.locality.wait.process,spark.locality.wait.node, spark.locality.wait.rack等;一般的具體設定是locality優先順序越高則可以設定越高的等待超時時間;

二:rdd的自定義(以spark on hbase為例)

1,第一步是定義rdd.getpartitions的實現:

a)createrelation具體確定hbase的鏈結方式和具體訪問的表;

b)然後通過hbase的api來獲取region的list;

c)可以過濾出有效地資料;

d)最後返回region的array[partition],也就是說乙個partition處理乙個region的資料,為更佳的資料本地性打下基礎;

2,第二步是rdd.getpreferredlocations

a)根據split包括的region資訊來確定region具體在什麼節點上,這樣task在排程的時候就可以優先被排程到region所在的機器上,最大化的提高資料本地性;

3,第三步是rdd.compute

a) 根據split中的region等資訊呼叫hbase的api來進行操作(主要是查詢)

4,spark on hbase開源實現

1.作業:從網路上查詢rdd封裝mysql的具體實現

在spark中提供了乙個jdbcrdd類,該rdd就是讀取jdbc中的資料並轉換成rdd,之後我們就可以對該rdd進行各種的操作。我們先看看該類的建構函式:

jdbcrdd[t: classtag](

sc: sparkcontext,

getconnection: () => connection,

sql: string,

lowerbound: long,

upperbound: long,

numpartitions: int,

maprow: (resultset) => t = jdbcrdd.resultsettoobjectarray _)

這個類帶了很多引數,關於這個函式的各個引數的含義,我覺得直接看英文就可以很好的理解,如下:

1、getconnection 返回乙個已經開啟的結構化資料庫連線,jdbcrdd會自動維護關閉。

2、sql 是查詢語句,此查詢語句必須包含兩處佔位符?來作為分割資料庫resulset的引數,例如:」select title, author from books where ? < = id and id <= ?」

3、lowerbound, upperbound, numpartitions 分別為第

一、第二佔位符,partition的個數。例如,給出lowebound 1,upperbound 20, numpartitions 2,則查詢分別為(1, 10)與(11, 20)

4、maprow 是轉換函式,將返回的resultset轉成rdd需用的單行資料,此處可以選擇array或其他,也可以是自定義的case class。預設的是將resultset 轉換成乙個object陣列。

Spark效能優化第二季

一 task效能優化 1,慢任務 資料傾斜或機器故障 的效能優化 可以考慮減少每個partition處理的資料量,同時建議開啟spark.speculation 2,儘量減少shuffle,例如我們要減少groupbykey的操作,因為groupbykey會要求通過網路拷貝 shuffle 所有的資...

第五季vivo影像尋城記,從心出發,發現更多美

伴隨著vivo x23正式發布,第五季程式設計客棧 vivo影像尋城記 也宣告正式開啟。vivo影像尋城記 活動是由vivo與 國家地理 攜手打造,已歷經四季,旨在鼓勵消費者通過手機鏡頭去捕捉身邊更多的美,讓更多人愛上攝影 發現更多美。2014年,vivo首度與 國家地理 合作,開啟第一季 vivo...

spark效能優化

熟悉spark核心之後,深刻體會到了spark開發中存在著大量細節左右著計算效能。趁著剛看過大概的流程,先基於目前的感受和相關資料,總結一下可能存在優化空間的地方。spark優化其實就是將不必要的開銷能省就省。建立rdd是昂貴的,從磁碟讀取rdd也是昂貴的,需要大量的io開銷,shuffle是與基於...