日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Spark中Data skew(数据倾斜)Java+Python+Scala三种接口完整代码

發布時間:2023/12/31 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark中Data skew(数据倾斜)Java+Python+Scala三种接口完整代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

起因


代碼中shuffle的算子存在的地方,groupByKey、countByKey、reduceByKey、join等

判斷一個算子是shuffle算子可以通過[20]

?

出現的問題有兩種


①大部分task執行的很快,剩下幾個task執行的特別特別慢
②JVM Out Of Memory

?


數據傾斜發生的原理[2]


數據傾斜的原理很簡單:在進行shuffle的時候,
必須將各個節點上相同的key拉取到某個節點上的一個task來進行處理,
比如按照key進行聚合或join等操作。
此時如果某個key對應的數據量特別大的話,就會發生數據傾斜。
比如大部分key對應10條數據,但是個別key卻對應了100萬條數據,
那么大部分task可能就只會分配到10條數據,然后1秒鐘就運行完了;
但是個別task可能分配到了100萬數據,要運行一兩個小時。因此,整個Spark作業的運行進度是由運行時間最長的那個task決定的。
(自己總結:每個key負責處理的數據不一樣,導致了木桶效應)
找出異常的key[3]
如果任務長時間卡在最后最后1個(幾個)任務,首先要對key進行抽樣分析,判斷是哪些key造成的。

某個task執行特別慢的情況[2]
首先要看的,就是數據傾斜發生在第幾個stage中。
如果是用yarn-client模式提交,那么本地是直接可以看到log的,可以在log中找到當前運行到了第幾個stage;如果是用yarn-cluster模式提交,則可以通過Spark Web UI來查看當前運行到了第幾個stage。

此外,無論是使用yarn-client模式還是yarn-cluster模式,我們都可以在Spark Web UI上深入看一下當前這個stage各個task分配的數據量,從而進一步確定是不是task分配的數據不均勻導致了數據傾斜。
比如下圖中,倒數第三列顯示了每個task的運行時間。

明顯可以看到,有的task運行特別快,只需要幾秒鐘就可以運行完;而有的task運行特別慢,需要幾分鐘才能運行完,

此時單從運行時間上看就已經能夠確定發生數據傾斜了。

此外,倒數第一列顯示了每個task處理的數據量,明顯可以看到,運行時間特別短的task只需要處理幾百KB的數據即可,而運行時間特別長的task需要處理幾千KB的數據,處理的數據量差了10倍。此時更加能夠確定是發生了數據傾斜。

?

數據傾斜解決方案代碼匯總

https://github.com/appleyuchi/spark_data_skew

Reference
[1]Spark項目實戰-數據傾斜解決方案之原理以及現象分析(已經閱讀)

[2]Spark性能優化指南——高級篇(代碼不完整,Java的,[2]中內容已經涵蓋[11])
[3]解決spark中遇到的數據傾斜問題(代碼不完整)
[4]spark處理數據傾斜的案例(圖示很清楚,但是代碼非常不詳細)
[5]Spark如何處理數據傾斜(代碼完整,scala版本,可以美團的java版本弄完后再回來看)
[6]Spark--聚合性數據傾斜解決方案實例說明(代碼很詳細,但是沒有數據集,主要技術就是key salting)
[7]解決spark數據傾斜(代碼完整,scala版本)

[8]spark調優之數據傾斜(scala版本,部分參考美團的)

[9]最完整的數據傾斜解決方案(spark)

[10]Spark性能優化之道——解決Spark數據傾斜(Data Skew)的N種姿勢
[11]面試必問&數據傾斜(已經閱讀)
[12]Spark Shuffle Write 和Read(spark底層源碼分析)
[13]Spark shuffle-write 和 shuffle-read 中對數據傾斜情況的處理(開頭概念很清晰)
[14]徹底搞懂spark的shuffle過程(shuffle write)(講解shuffle過程)

[15]Spark中RDD 持久化操作 cache與persist區別(cache與persist的區別)
[16]Spark性能優化:數據傾斜調優(轉載的[2])

[17]Spark map-side-join 關聯優化(代碼完整,scala版本)

[18]spark join broadcast優化(代碼不完整,scala版本)

[19]What are the Spark transformations that causes a Shuffle?

[20]判斷一個算子是否會導致shuffle的方法

[21]Spark性能優化之道——解決Spark數據傾斜(Data Skew)的N種姿勢

?

?

總結

以上是生活随笔為你收集整理的Spark中Data skew(数据倾斜)Java+Python+Scala三种接口完整代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。