女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

超實用的任務優化與斷點執行方案

Android編程精選 ? 來源:個推技術實踐 ? 作者:淵虹 ? 2021-07-05 16:33 ? 次閱讀

前言

隨著大數據時代的快速發展,企業每天需要存儲、計算、分析數以萬億的數據,同時還要確保分析的數據具備及時性、準確性和完整性。面對如此龐大的數據體系,ETL工程師(數據分析師)如何能高效、準確地進行計算并供業務方使用,就成了一個難題。

作為一家數據智能公司,個推在大數據計算領域沉淀了豐富的經驗。本篇文章將對大數據離線計算過程中出現的任務緩慢和任務中斷這兩大痛點問題提出解決思路,期望讀者能夠有所收獲。

一、任務緩慢

“任務執行緩慢”通常是指任務的執行時間超過10個小時,且不能滿足數據使用方對數據及時性的要求。比如業務方需早上就能夠查看T-1的數據,但是因為任務延時,業務方只能等到下午或者傍晚才能查詢、瀏覽T-1的數據,從而無法及時發現經營問題、進行高效決策。因此,對緩慢任務進行優化成了ETL工程師必不可少的一項工作。

在長期的大數據實踐中,我們發現,緩慢任務往往具有一定的共性。只要我們能找到問題所在,并對癥下藥,就能將任務執行時間大大縮短。個推將任務執行緩慢的常見問題歸納為以下四點:邏輯冗余,數據傾斜、大表復用,慢執行器。接下來會對每個痛點進行詳細闡述。

1、邏輯冗余

“邏輯冗余”往往是因為ETL工程師進行數據處理和計算時更關注處理結果是否滿足預期,而未深入考慮是否存在更高效的處理方式,導致原本可通過簡單邏輯進行處理的任務,在實際中卻使用了復雜邏輯來執行。

減少“邏輯冗余”更多地依賴開發者經驗的積累和邏輯思維以及代碼能力的提升。這里分享一些高級函數,希望能夠幫助開發者進一步提升數據處理效率。

Grouping sets

分組統計函數。這個函數可以實現在一段SQL中輸出不同維度的統計數據,避免出現執行多段SQL的情況,具體寫法如下:

358e8860-d55e-11eb-9e57-12bb97331649.png

Lateral view explode()

一行轉多行函數。這個函數只能處理array格式數據,需要配合split()函數使用,具體寫法如下:

3677624c-d55e-11eb-9e57-12bb97331649.png

還有其他一些函數、函數名及功能如下,具體用法需要讀者自行查詢(可登錄hive官網查詢函數大全):

find_in_set() :查找特定字符串在指定字符串中的位置

get_json_object():從json串中抽取指定數據

regexp_extract():抽取符合正則表達的指定字符

regexp_replace() :替換符合正則替換指定字符

reverse():字符串反轉

2、數據傾斜

“數據傾斜”是指在MR計算的過程中某些Map job需要處理的數據量太大、耗時太長,從而導致整個進程長時間無法結束,任務處理進度長時間卡在99%的現象。

針對數據傾斜的情況,開發者們可通過代碼層面進行修改,具體操作如下:

使用group by方式替換count(distinct id ) 方式進行去重統計

進行大小表關聯時使用mapjoin操作或子查詢操作,來替換 join操作

group by出現傾斜需要將分組字段值隨機切分成隨機值+原始值

join操作避免出現笛卡爾積,即關聯字段不要出現大量重復

3、大表復用

“大表復用”,是指對上億甚至幾十億的大表數據進行重復遍歷之后得到類似的結果。避免大表復用就要求ETL工程師進行系統化的思考,能夠通過低頻的遍歷將幾十億的大表數據瘦身到可重復使用的中間小表,且同時支持后續的計算。

因此,工程師需要在工程開發之初就將整體的工程結構考慮進去,并且堅持“大表僅使用一次”的原則,以提升整個工程的執行效率。

這里介紹一個實戰中的例子,供讀者參考:

36838676-d55e-11eb-9e57-12bb97331649.png

geqi_win_tmp表中數據:5000萬

4、慢執行器

“慢執行器”是指數據體量過于龐大時,Hive的底層計算邏輯已經無法快速遍歷單一分區中的所有數據。

由于在同等資源的情況下,Spark進行數據遍歷的效率遠高于MapReduce;且Spark任務對資源的搶占程度遠大于MapReduce任務,可在短時間內占用大量資源高效完成任務,之后快速釋放資源,以提高整個集群任務的執行效率。

因此,針對該情況,開發者可考慮使用pyspark等更為高效的計算引擎進行數據的快速遍歷。同時,開發者也需要有意識地加強思維訓練,養成良好的開發習慣,在面對海量數據時探索更快、更準、更體系化的計算和處理方式。

二、任務中斷

因為各種各樣的原因,線上任務經常會出現被kill掉然后重新執行的情況。任務重新執行會嚴重浪費集群資源,同時使得數據計算結果延遲從而影響到業務方的數據應用。如何避免這種現象的發生呢?個推是這樣解決該問題的。

個推的定時任務是基于Azkaban調度系統開發的,個推的數據分析師主要使用shell、HSQL、MySQL、Pypark四種代碼進行數據處理,將原始日志清洗、計算,然后生成公共層、報表層數據,最終供業務方使用。

因此個推需要設定四種代碼執行器以支持腳本中對不同類型代碼的處理。這里主要對其中的三個核心內容進行介紹:代碼塊輸入、執行函數以及循環器。

1、代碼塊輸入

一般情況下,腳本中的shell、HSQL、MySQL、pypark代碼會按照順序直接執行,不能選擇性執行。在實踐中,我們將代碼塊以字符串的方式賦值給shell中的變量,并在字符串的開頭標記是何種類型的代碼,代碼執行到具體步驟時只有賦值操作,不會解析執行,具體如下:

? 執行HSQL代碼塊

36d0d5a2-d55e-11eb-9e57-12bb97331649.png

? 執行shell代碼塊

36dda980-d55e-11eb-9e57-12bb97331649.png

? 執行mysql代碼塊

36eb8d48-d55e-11eb-9e57-12bb97331649.png

? 執行pyspark代碼塊

36f7b424-d55e-11eb-9e57-12bb97331649.png

如此,就實現了將不同的代碼放入對應的step_n中。在后續的執行器中這些代碼能夠直接執行,開發者只需要關心邏輯處理即可。

2、執行函數

執行函數是對shell中變量step_n當中的字符串進行代碼解析并執行。不同類型的代碼塊解析方式不同,因此需要定義不同的執行函數。函數一般單獨放在整個工程的配置文件中,通過source的方式調用,具體函數定義如下:

3703effa-d55e-11eb-9e57-12bb97331649.png

Hive、MySQL以及shell的執行函數比較簡單,通過hive-e 或者eval的方式就可以直接執行。pyspark需要配置相應的隊列、路徑、參數等,還需要在工程中增spark.py文件才能執行,此處不做贅述。

3、循環器

循環器是斷點執行功能的核心內容,是步驟的控制器。循環器通過判斷shell變量名確定需要執行哪一步,通過判斷變量中字符串內容確定使用何種函數解析代碼并執行。

下圖是參考案例,代碼如下:

37159a0c-d55e-11eb-9e57-12bb97331649.png

開發者需要在腳本的開始定義好整個代碼的結束步驟,以確保循環器正常運行;同時,可將開始步驟當作腳本參數傳入,這樣就很好地實現了任務的斷點執行功能。

總結

ETL工程中的任務緩慢和任務中斷問題是每個大數據工程師都需要面對和解決的。本文基于個推大數據實踐,針對任務緩慢和任務中斷問題提出了相應解決思路和方案,希望能夠幫助讀者在任務優化以及ETL工程開發方面擴寬思路,提高任務執行效率,同時降低任務維護的人力成本和機器成本。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 存儲
    +關注

    關注

    13

    文章

    4506

    瀏覽量

    87085
  • SQL
    SQL
    +關注

    關注

    1

    文章

    780

    瀏覽量

    44816
  • ETL
    ETL
    +關注

    關注

    0

    文章

    22

    瀏覽量

    9558
  • 函數
    +關注

    關注

    3

    文章

    4371

    瀏覽量

    64221
  • 大數據
    +關注

    關注

    64

    文章

    8952

    瀏覽量

    139515

原文標題:ETL工程師必看!超實用的任務優化與斷點執行方案

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    HarmonyOS優化應用文件上傳下載慢問題性能優化

    參考該工程。 (三)文件上傳 對于大文件斷點續傳上傳,本文采用request(上傳下載)模塊中的request.agent任務托管接口,可以自動實現暫停繼續重試等操作,無需手動將文件分片和記錄上傳分片
    發表于 05-27 16:19

    邊緣計算網關支持斷點續傳嗎

    邊緣計算網關通常支持斷點續傳功能 。斷點續傳功能是邊緣計算網關的重要特性之一,它能夠在網絡中斷或設備故障時,將采集到的數據暫存在本地存儲空間中,待網絡恢復后再將數據上傳至云平臺,從而保證數據的完整性
    的頭像 發表于 05-27 15:25 ?112次閱讀

    HarmonyOS優化應用文件上傳下載慢問題性能優化

    參考該工程。 (三)文件上傳 對于大文件斷點續傳上傳,本文采用request(上傳下載)模塊中的request.agent任務托管接口,可以自動實現暫停繼續重試等操作,無需手動將文件分片和記錄上傳分片
    發表于 05-22 10:54

    使用串口dma環形接收+空閑中斷,觸發空閑中斷后進入任務中拷貝數據發現拷貝的數據全為0,怎么處理?

    求助,我使用串口dma環形接收+空閑中斷,默認應該開了緩存,在觸發空閑中斷后進入任務中拷貝數據發現拷貝的數據全為0,但是我掛上調試之后在拷貝之前只要打上斷點斷一次執行之后再執行就正常了
    發表于 03-27 06:17

    【干貨】LLC設計指導-PI方案(經典版)

    LLC設計指導-PI方案(經典版) 部分內容截取......(如果內容有幫助麻煩回帖支持一下哦~) 獲取完整文檔資料可下載附件哦?。。?!
    發表于 03-13 14:17

    HarmonyOS NEXT 原生應用/元服務-ArkTS代碼調試使用斷點

    DevEco Studio ArkTS支持行斷點和異常斷點,這些斷點可以觸發不同的操作。 行斷點斷點是最常見的類型,用于在指定的代碼行暫
    發表于 03-04 17:15

    谷歌AI智能體執行復雜任務能力大幅提升

    自然語言描述任務,隨后由AI智能體代替用戶執行并最終完成任務,極大地提升工作效率和便捷性。 為了推進這一技術的實現,谷歌正在積極開發兩個相關項目。其中備受矚目的是名為“Mariner”的瀏覽器擴展程序。通過該程序,AI智能體能夠
    的頭像 發表于 02-17 14:39 ?550次閱讀

    Linux計劃任務cron詳解

    cron是linux下用來周期性的執行某種任務或等待處理某些事件的一個守護進程,與windows下的計劃任務類似,當安裝完成操作系統后,默認會安裝此服務 工具,并且會自動啟動crond進程,crond進程每分鐘會定期檢查是否有要
    的頭像 發表于 02-07 15:31 ?755次閱讀
    Linux計劃<b class='flag-5'>任務</b>cron詳解

    斷點續傳工業網關有什么應用場景

    在工業網關中,斷點續傳是一種重要的數據傳輸技術,指的是在網絡連接中斷時,網關能夠記錄當前數據斷點,并在重新建立連接后繼續未完成的任務,補發應發的全部數據,從而確保了工業現場采集的數據在網絡中斷期間
    的頭像 發表于 11-29 17:12 ?636次閱讀

    結MOSFET體二極管性能優化

    結MOSFET體二極管性能優化 ? ? ? ? ? ? ? ? ? END ?
    的頭像 發表于 11-28 10:33 ?565次閱讀

    廣州盈致WMS系統:優化倉儲管理的智能化解決方案

    WMS系統 是一種基于信息技術的智能化倉儲管理解決方案,通過數字化、自動化和智能化的方式,優化企業的倉儲管理流程,提高效率、準確性和可控性。以下是WMS系統優化倉儲管理的智能化解決方案
    的頭像 發表于 10-21 14:53 ?433次閱讀

    網關斷點續傳可以實現什么功能

    在數字化時代,數據傳輸的效率和穩定性成為了衡量信息系統性能的重要指標之一。隨著云計算、大數據、物聯網等技術的飛速發展,數據量的爆炸性增長對數據傳輸技術提出了更高要求。在這樣的背景下,網關斷點
    的頭像 發表于 10-16 13:53 ?634次閱讀

    LED燈帶斷點續傳是什么意思

    led幻彩跑馬燈帶分帶斷點續傳和不帶斷點續傳的。燈帶斷點續傳是指采用雙信號線交叉傳輸的方案,當其中一個信號中斷后,另一條備用信號線能繞開故障點,將信號傳輸到下一個像素點。簡單來說就是一
    發表于 07-18 18:20

    TC2XX/3XX多核斷點設置無效的原因?

    TC2XX/3XX多核斷點設置無效,請問hinghtec的多核要怎么才能被觸發,(函數已經執行,但是斷點沒有被觸發)或者如何才能進行多核調試。
    發表于 07-03 07:33

    任務編譯器:斷點后進入代碼不起作用,為什么?

    我正在使用 Tricore Aurix TC37x 和 Tasking Compiler。 我可以加載我的應用程序(基于 autosar)并運行它。 然而,當我想調試代碼時,如果我設置一個斷點并嘗試
    發表于 07-02 07:49