1. 程式人生 > >一次查詢2

一次查詢2

用df計算sql,寫入hive表,用相同的聚合處理3類不同的distinct(因為一次只算一個distinct可以利用shuffle的分發,提高速度,對大資料量的處理,比如20億條資料distinct,大概只能一次distinct一個值了。)發現對於資料量較小的第二,第三塊處理時間較快,對較多的groupping sets產生資料也較少,而對第一個有20億條需要處理的部分則輸入50G,產生2Tgroupping後的資料,之後在再次聚合的時候應該發生了傾斜。問題在於:對於同樣的輸入,為什麼一開始input就大小不一樣?shuffle write輸出了什麼,為什麼50G輸入會輸出2T資料?如果第一部分聚合好,第二部分不應該傾斜,原因是什麼?

傾斜情況觀察

其實30min基本上stage3就剩20個task了,但是最後一個執行兩小時都沒執行完
觀察正在執行的task,輸入38G,其他完成的task有幾G的,有幾百兆的,所以判定是傾斜了
看已完成的任務,有75%的輸入只有5G,而最大的卻到了34G;這樣的任務即使能跑通一天,後續也會經常出問題

輸入輸出讓我不能理解的地方
這裡寫圖片描述
這裡寫圖片描述

另外當聚合的group維度上升到7維時,執行第一階段任務大批量失敗,應該是executor的記憶體滿了,報錯是can not find address;後來降了一維為減輕傾斜的維度後第一階段正常執行,但是第二階段傾斜如上所述。
這裡寫圖片描述
這裡寫圖片描述

相關推薦

查詢2

用df計算sql,寫入hive表,用相同的聚合處理3類不同的distinct(因為一次只算一個distinct可以利用shuffle的分發,提高速度,對大資料量的處理,比如20億條資料distinct,大概只能一次distinct一個值了。)發現對於資料量較小的

centos7.2 rpm方式安裝mysql5.7.19 報錯

assume bzip with mysql oot -s first minimal enter 0、環境 本文操作系統: CentOS 7.2.1511 x86_64 MySQL 版本: 5.7.19 安裝之前先把開發環境裝一下 yum -y install

怎麽查詢出某字段相同的全部數據

查詢 cnblogs 結果 數據庫表 pos 技術分享 code 全部 lec 1、數據庫表: 希望查詢出來的結果是這樣的: sql語句: select * from user where name in (select name from user group by

記錄查詢log的經歷

一大早發現生產資料庫的基礎資料被刪除。 由於每天都做了差異備份,而且是基礎資料,這樣資料就不會擔心找不回來。 首先通過每天的差異本分檔案進行檢視資料丟失的大概時間,查到資料丟失是在17晚上備份過後18丟失的。 然後找18號的資料庫執行記錄 貼上語句: SELECT ST.text AS '執

centos7.2 檔案系統修復

centos 7 系統恢復 故障描述 啟動之後作業系統只能進入到單使用者模式 使用U盤進入救援模式進行恢復 選擇Troubleshooting 選擇Rescue a Centos system 選擇1 contin

sql的巢狀查詢,把查詢的結果做為表繼續進一步查詢;內聯檢視

Mysql的巢狀表查詢   巢狀SELECT語句也叫子查詢,一個 SELECT 語句的查詢結果能夠作為另一個語句的輸入值。子查詢可以: 出現在Where子句中, 出現在from子句中,作為一個臨時表使用, 出現在select list中,作為一個欄位值來返回。 示例 1、出現在whe

sql的嵌套查詢,把查詢的結果做為表繼續進一步查詢;內聯視圖

實驗 單獨 gets pro 參考 autotrace https data ray Mysql的嵌套表查詢   嵌套SELECT語句也叫子查詢,一個 SELECT 語句的查詢結果能夠作為另一個語句的輸入值。子查詢可以: 出現在Where子句中, 出現在from子句中,作

找出陣列中只出現2個數字,其他數字都出現2

package lianxi_1; import java.util.ArrayList; import java.util.List; //如果一個數組中只有兩個數字出現1次,其他都是出現2次

查詢sqlserver死鎖的經歷

查詢bug是程式設計師的家常便飯,我身邊的人喜歡讓使用者來重現問題。當然他們也會從正式伺服器上下載錯誤log,然後嘗試分析log,不過當錯誤不是那種不經思考就可識別的情況,他們就會將問題推向使用者,甚至怪罪程式依賴的平臺。他們常用的藉口就是“這個問題很難重現,需要持續監控

查詢請求及響應的過程

一次請求響應(以查詢為例)的具體的過程:1.客戶端瀏覽器傳送請求到伺服器;伺服器通過客戶端請求的URI傳遞到servlet,sevlet呼叫doGet()或doPost方法;在主管查詢的servlet中這兩個方法的方法體中呼叫Dao;根據Dao執行sql程式碼訪問資料庫,將查

使用Hibernate criteria進行分頁查詢時,如何實現查詢取得總記錄數和分頁後結果集

可先使用 Projections.rowCount() 來取得總記錄數,如下: Long totalNum = (Long)criteria.setProjection(Projections.rowCount()).uniqueResult(); 然後將 Project

【iOS開發】記錄蘋果2.1大禮包被拒絕3歷時12天的坑逼上架歷程

##一、場景描述(歷時12天的上架歷程) ##二、解決方案 ###2.1 第一次被拒絕原因(網上傳言的“狗年大禮包”) 發件人 Apple Guideline 2.1 - Information Needed This type of app has

mysql查詢,返回多個統計結果

1.sum(if) select sum(if(status=1,1,0)) as s1_count, sum(if(status=2,1,0)) as s2_count from order;

jquery 選擇2個元素 多個元素

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html x

(原創)Linux核心升級全過程 手把手教你成功(2.4.20-8到2.6.18)

Linux核心升級全過程 手把手教你一次成功(2.4.20-8到2.6.18)  ============================= 時間:2007-01-08作者:飄揚首發:http://www.piaoyang.org/blog Q Q: 47720194郵箱:p

【學習筆記】Mysql的查詢的過程

1.使用者發起請求,這裡往往時多執行緒併發訪問 2.去資料庫執行緒池拿資料庫連結,如果沒有執行緒池,每次訪問都要和資料庫建立一次連線,非常耗時,效率低下 3.資料庫層面上來說,可能會有多個系統同時訪問它,所以它也要維護與系統之間的多個連線,也就是資料庫層面的連線池 4.Mysql工作執行緒會監聽資料庫操作的請

【Java】每2查詢資料庫

1.起定時器,每2秒進行一次動作 package connection; import java.util.Timer; import java.util.TimerTask; public class ConnetionToOracle extends TimerTask { publi

Powershell管理系列(四十)PowerShell查詢和解鎖AD賬號(改進後,只發郵件)

powershell管理系列(四十)powershell查詢和解鎖ad賬號(改進後 只發一次郵件) -----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微軟產品實施及外包,QQ:185426445.電話18666943750需求:根據要求對集團AD域及下屬3個

記Angular與Django REST框架的合作(2):前端組件化——Angular

服務器 信息 outer demo cli 組成 控制 set 根據 註:這是這個系列的第二部分,主要集中在Angular的使用方面。之前使用過AngularJS(Angular 1.x),混在Django的模板中使用,這些頁面一般完全是結果展示頁。在有Django表單輸入

偽*sql查詢結果不一致的

vid eight frame and sna parameter -exec video http 調試代碼發現,兩個操作最後都會調用同一個方法。傳入的參數一致,查詢結果卻不一致。 直接說問題原因:我的兩個操作是aop環繞通知先拿到傳入參數以後,校驗是否需要往另一張表中插