spark shuffle 剖析

ShuffleExchangeExec
  private lazy val writeMetrics =SQLShuffleWriteMetricsReporter.createShuffleWriteMetrics(sparkContext)private[sql] lazy val readMetrics =SQLShuffleReadMetricsReporter.createShuffleReadMetrics(sparkContext)

用在了兩個地方,承接的是前后兩個stage 的metrics

  /*** A [[ShuffleDependency]] that will partition rows of its child based on* the partitioning scheme defined in `newPartitioning`. Those partitions of* the returned ShuffleDependency will be the input of shuffle.*/@transientlazy val shuffleDependency : ShuffleDependency[Int, InternalRow, InternalRow] = {val dep = ShuffleExchangeExec.prepareShuffleDependency(inputRDD,child.output,outputPartitioning,serializer,writeMetrics)metrics("numPartitions").set(dep.partitioner.numPartitions)val executionId = sparkContext.getLocalProperty(SQLExecution.EXECUTION_ID_KEY)SQLMetrics.postDriverMetricUpdates(sparkContext, executionId, metrics("numPartitions") :: Nil)dep}
  protected override def doExecute(): RDD[InternalRow] = {// Returns the same ShuffleRowRDD if this plan is used by multiple plans.if (cachedShuffleRDD == null) {cachedShuffleRDD = new ShuffledRowRDD(shuffleDependency, readMetrics)}cachedShuffleRDD}

在這里插入圖片描述

一般情況是,兩個metrics 相同。 write 在前,read 在后

如果下個shuffle read task 沒有完成或者失敗,就會出現read 比write 少的情況。

broadcast
  /** Remove all blocks belonging to the given broadcast. */def removeBroadcast(broadcastId: Long, removeFromMaster: Boolean, blocking: Boolean): Unit = {val future = driverEndpoint.askSync[Future[Seq[Int]]](RemoveBroadcast(broadcastId, removeFromMaster))future.failed.foreach(e =>logWarning(s"Failed to remove broadcast $broadcastId" +s" with removeFromMaster = $removeFromMaster - ${e.getMessage}", e))(ThreadUtils.sameThread)if (blocking) {// the underlying Futures will timeout anyway, so it's safe to use infinite timeout hereRpcUtils.INFINITE_TIMEOUT.awaitResult(future)}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/165350.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165350.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165350.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

目標檢測YOLO系列從入門到精通技術詳解100篇-【目標檢測】SLAM(基礎篇)(三)

目錄 前言 移動機器人視覺SLAM回環檢測 01 回環檢測問題描述 02 主流回環檢測方法 2.1 根據路標點先驗信息

【Flink】Standalone運行模式

獨立模式是獨立運行的,不依賴任何外部的資源管理平臺;當然獨立也是有代價的:如果資源不足,或者出現故障,沒有自動擴展或重分配資源的保證,必須手動處理。所以獨立模式一般只用在開發測試或作業非常少的場景…

Ps:參考線

參考線 Guides用于幫助精確地定位圖像或元素,顯示為浮動在圖像上的非打印線,可以移動或移除,還可以臨時鎖定。 Ps 中的參考線可分為三大類:畫布參考線、畫板參考線和智能參考線。 可在“首選項/參考線、網格和切片”中設置參考線的…

C 標準庫 - <stddef.h>和<stdio.h>詳解

目錄 C 標準庫 - 簡介 庫變量 庫宏 實例 C 標準庫 - 簡介 庫變量 庫宏 庫函數 實例 C 標準庫 - <stddef.h> 簡介 <stdio.h> 是 C 語言中的一個標準庫&#xff0c;它提供了一些常用的函數和類型定義&#xff0c;用于處理與大小相關的操作。 庫變量 …

深信服防火墻路由模式開局部署-手把手教學(小白篇)

PS&#xff1a;深信服的設備只有400能夠通過console連接&#xff0c;一般用戶是無法連接的&#xff0c;所以大家不要妄想著從Console連接設備了&#xff0c;開局就通過MANAGE進入Web就可以 接通電源后&#xff0c;開機拿一根網線&#xff0c;一端連接防火墻的MANAGE口&#xf…

uniapp uni.navigateBack返回后刷新頁面數據

方法1: 父頁面設置鉤子函數(onBackPress): 頁面簡介 | uni-app官網 適用于刷新多處數據 onBackPress(options) {this.refreshData(); }, methods:{refreshData: function() {//加載數據}, }, 方法2: 返回加success回調 uni.navigateBack({delta: 1, //返回層數&#xff0…

【C++】泛型編程 ? ( 類模板示例 - 數組類模板 | 容器思想 | 自定義類可拷貝 - 深拷貝與淺拷貝 | 自定義類可打印 - 左移運算符重載 )

文章目錄 一、容器思想1、自定義類可拷貝 - 深拷貝與淺拷貝2、自定義類可拷貝 - 代碼示例3、自定義類可打印 - 左移運算符重載 二、代碼示例1、Array.h 頭文件2、Array.cpp 代碼文件3、Test.cpp 主函數代碼文件4、執行結果 一、容器思想 1、自定義類可拷貝 - 深拷貝與淺拷貝 上…

百戰python02-語言元素

文章目錄 指令與程序變量與類型變量命名變量的使用運算符賦值運算符比較運算符和邏輯運算符練習1:華氏溫度轉換為攝氏溫度練習2:輸入圓的半徑計算計算周長和面積練習3:輸入年份判斷是不是閏年字符串常用操作注:需要對python有基本了解,可查看本作者python基礎專欄,有任何問…

大模型生態新篇章:以AI Agent為引,助企業創新應用落地

文 | 智能相對論 作者 | 沈浪 以聊天機器人、虛擬助手、智能客服等為代表的對話式人工智能 (Conversational AI Agents ) 在具體服務場景中的應用已經十分普遍。今年以來&#xff0c;隨著大模型技術的爆發與加持&#xff0c;對話式AI被市場賦予了更高的期望。 “所有行業都值…

Spring 事務失效的7種場景, 事務失效后如何進行處理

文章目錄 簡單說說spring事務失效的場景Spring 事務失效的7種場景1.1、未啟用[spring事務管理](https://so.csdn.net/so/search?qspring事務管理&spm1001.2101.3001.7020)功能1.2、方法不是public類型的1.3、數據源未配置事務管理器1.4、自身調用問題1.5、異常類型錯誤1.6…

《golang設計模式》第三部分·行為型模式-07-觀察者模式(Observer)/發布者—訂閱者模式

文章目錄 1. 概念1.1 角色1.2 類圖 2. 代碼示例2.1 代碼2.2 類圖 1. 概念 觀察者&#xff08;Observer&#xff09;指當目標對象狀態發生變化后&#xff0c;對狀態變化事件進行響應或處理的對象。 1.1 角色 Subject&#xff08;抽象主題&#xff09;&#xff1a; 它可以有多…

微服務實戰系列之Feign

前言 不知不覺&#xff0c;“微服務實戰系列”已完成了六篇&#xff0c;每篇都聚焦一個主題&#xff0c;目的是便于各位盆友能夠快速、全面地接收和消化。 博主從服務注冊到服務監控&#xff0c;從服務路由到服務安全&#xff0c;從身份認證到加密技術均有涉獵。凡此均有關微服…

Java核心知識點整理大全10-筆記

往期快速傳送門&#xff1a; Java核心知識點整理大全-筆記_希斯奎的博客-CSDN博客文章瀏覽閱讀9w次&#xff0c;點贊7次&#xff0c;收藏7次。Java核心知識點整理大全https://blog.csdn.net/lzy302810/article/details/132202699?spm1001.2014.3001.5501 Java核心知識點整理…

【LeetCode刷題】--67.二進制求和

67.二進制求和 方法&#xff1a;模擬計算 class Solution {public String addBinary(String a, String b) {StringBuilder ans new StringBuilder();int carry 0;for(int ia.length()-1,jb.length()-1;i>0||j>0;i--,j--){int sum carry;sum i >0 ? a.charAt(i) …

web:[WUSTCTF2020]樸實無華

題目 點開頁面顯示如下 頁面顯示了一行報錯&#xff1a;Cannot modify header information - headers already sent by (output started at /var/www/html/index.php:3) in /var/www/html/index.php on line 4 意思為不能修改報頭信息-報頭已經發送(輸出開始于/var/www/html/i…

vue3 websocket連接 發送數據

先建一個websocket.js放在項目中&#xff0c;內容如下&#xff1a; var websock null; let rec; //斷線重連后&#xff0c;延遲5秒重新創建WebSocket連接 rec用來存儲延遲請求的代碼 let isConnect false; //連接標識 避免重復連接 let checkMsg "heartbeat"; /…

MySQL與Redis如何保證數據的一致性

文章目錄 MySQL與Redis如何保證數據的一致性&#xff1f;不好的方案1. 先寫 MySQL&#xff0c;再寫 Redis2. 先寫 Redis&#xff0c;再寫 MySQL3. 先刪除 Redis&#xff0c;再寫 MySQL 好的方案4. 先刪除 Redis&#xff0c;再寫 MySQL&#xff0c;再刪除 Redis5. 先寫 MySQL&am…

C# 數據庫封裝

最近有些地方用到c#&#xff0c;研究了一下&#xff0c;也有數據庫方面的操作&#xff0c;那就繼續封裝&#xff0c;自己用起來好用一點。 數據庫連接 using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using Sys…

Leetcode算法系列| 1. 兩數之和(四種解法)

目錄 1.題目2.題解解法一&#xff1a;暴力枚舉解法二&#xff1a;哈希表解法解法三&#xff1a;雙指針(有序狀態)解法四&#xff1a;二分查找(有序狀態) 1.題目 給定一個整數數組 nums 和一個整數目標值 target&#xff0c;請你在該數組中找出 和為目標值 target 的那 兩個 整數…

『RabbitMQ』入門指南(安裝,配置,應用)

前言 RabbitMQ 是在 AMQP&#xff08;Advanced Message Queuing Protocol&#xff09; 協議標準基礎上完整的&#xff0c;可復用的企業消息系統。它遵循 Mozilla Public License 開源協議&#xff0c;采用 Erlang 實現的工業級的消息隊列(MQ)服務器&#xff0c;建立在 Erlang …