日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

超實(shí)用的任務(wù)優(yōu)化與斷點(diǎn)執(zhí)行方案

Android編程精選 ? 來源:個推技術(shù)實(shí)踐 ? 作者:淵虹 ? 2021-07-05 16:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

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

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

一、任務(wù)緩慢

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

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

1、邏輯冗余

“邏輯冗余”往往是因?yàn)镋TL工程師進(jìn)行數(shù)據(jù)處理和計算時更關(guān)注處理結(jié)果是否滿足預(yù)期,而未深入考慮是否存在更高效的處理方式,導(dǎo)致原本可通過簡單邏輯進(jìn)行處理的任務(wù),在實(shí)際中卻使用了復(fù)雜邏輯來執(zhí)行。

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

Grouping sets

分組統(tǒng)計函數(shù)。這個函數(shù)可以實(shí)現(xiàn)在一段SQL中輸出不同維度的統(tǒng)計數(shù)據(jù),避免出現(xiàn)執(zhí)行多段SQL的情況,具體寫法如下:

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

Lateral view explode()

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

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

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

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

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

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

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

reverse():字符串反轉(zhuǎn)

2、數(shù)據(jù)傾斜

“數(shù)據(jù)傾斜”是指在MR計算的過程中某些Map job需要處理的數(shù)據(jù)量太大、耗時太長,從而導(dǎo)致整個進(jìn)程長時間無法結(jié)束,任務(wù)處理進(jìn)度長時間卡在99%的現(xiàn)象。

針對數(shù)據(jù)傾斜的情況,開發(fā)者們可通過代碼層面進(jìn)行修改,具體操作如下:

使用group by方式替換count(distinct id ) 方式進(jìn)行去重統(tǒng)計

進(jìn)行大小表關(guān)聯(lián)時使用mapjoin操作或子查詢操作,來替換 join操作

group by出現(xiàn)傾斜需要將分組字段值隨機(jī)切分成隨機(jī)值+原始值

join操作避免出現(xiàn)笛卡爾積,即關(guān)聯(lián)字段不要出現(xiàn)大量重復(fù)

3、大表復(fù)用

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

因此,工程師需要在工程開發(fā)之初就將整體的工程結(jié)構(gòu)考慮進(jìn)去,并且堅(jiān)持“大表僅使用一次”的原則,以提升整個工程的執(zhí)行效率。

這里介紹一個實(shí)戰(zhàn)中的例子,供讀者參考:

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

geqi_win_tmp表中數(shù)據(jù):5000萬

4、慢執(zhí)行器

“慢執(zhí)行器”是指數(shù)據(jù)體量過于龐大時,Hive的底層計算邏輯已經(jīng)無法快速遍歷單一分區(qū)中的所有數(shù)據(jù)。

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

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

二、任務(wù)中斷

因?yàn)楦鞣N各樣的原因,線上任務(wù)經(jīng)常會出現(xiàn)被kill掉然后重新執(zhí)行的情況。任務(wù)重新執(zhí)行會嚴(yán)重浪費(fèi)集群資源,同時使得數(shù)據(jù)計算結(jié)果延遲從而影響到業(yè)務(wù)方的數(shù)據(jù)應(yīng)用。如何避免這種現(xiàn)象的發(fā)生呢?個推是這樣解決該問題的。

個推的定時任務(wù)是基于Azkaban調(diào)度系統(tǒng)開發(fā)的,個推的數(shù)據(jù)分析師主要使用shell、HSQL、MySQL、Pypark四種代碼進(jìn)行數(shù)據(jù)處理,將原始日志清洗、計算,然后生成公共層、報表層數(shù)據(jù),最終供業(yè)務(wù)方使用。

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

1、代碼塊輸入

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

? 執(zhí)行HSQL代碼塊

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

? 執(zhí)行shell代碼塊

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

? 執(zhí)行mysql代碼塊

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

? 執(zhí)行pyspark代碼塊

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

如此,就實(shí)現(xiàn)了將不同的代碼放入對應(yīng)的step_n中。在后續(xù)的執(zhí)行器中這些代碼能夠直接執(zhí)行,開發(fā)者只需要關(guān)心邏輯處理即可。

2、執(zhí)行函數(shù)

執(zhí)行函數(shù)是對shell中變量step_n當(dāng)中的字符串進(jìn)行代碼解析并執(zhí)行。不同類型的代碼塊解析方式不同,因此需要定義不同的執(zhí)行函數(shù)。函數(shù)一般單獨(dú)放在整個工程的配置文件中,通過source的方式調(diào)用,具體函數(shù)定義如下:

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

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

3、循環(huán)器

循環(huán)器是斷點(diǎn)執(zhí)行功能的核心內(nèi)容,是步驟的控制器。循環(huán)器通過判斷shell變量名確定需要執(zhí)行哪一步,通過判斷變量中字符串內(nèi)容確定使用何種函數(shù)解析代碼并執(zhí)行。

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

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

開發(fā)者需要在腳本的開始定義好整個代碼的結(jié)束步驟,以確保循環(huán)器正常運(yùn)行;同時,可將開始步驟當(dāng)作腳本參數(shù)傳入,這樣就很好地實(shí)現(xiàn)了任務(wù)的斷點(diǎn)執(zhí)行功能。

總結(jié)

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

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 存儲
    +關(guān)注

    關(guān)注

    13

    文章

    4897

    瀏覽量

    90313
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    807

    瀏覽量

    46965
  • ETL
    ETL
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    10155
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4422

    瀏覽量

    67876
  • 大數(shù)據(jù)
    +關(guān)注

    關(guān)注

    64

    文章

    9099

    瀏覽量

    144088

原文標(biāo)題:ETL工程師必看!超實(shí)用的任務(wù)優(yōu)化與斷點(diǎn)執(zhí)行方案

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于蜂鳥E203的硬件斷點(diǎn)功能添加

    Hardware Trigger Module中即包含Trigger Register用于支持硬件斷點(diǎn)。設(shè)置硬件斷點(diǎn)后,斷點(diǎn)信息存儲于硬件斷點(diǎn)寄存器內(nèi),程序
    發(fā)表于 10-23 07:11

    工業(yè)網(wǎng)關(guān)的斷點(diǎn)續(xù)傳有哪些作用

    工業(yè)網(wǎng)關(guān)的斷點(diǎn)續(xù)傳功能在工業(yè)場景中具有重要作用,它通過在數(shù)據(jù)傳輸中斷后能夠從中斷點(diǎn)繼續(xù)傳輸,而非重新開始,顯著提升了數(shù)據(jù)傳輸?shù)目煽啃?、效率和靈活性。以下是其核心作用及具體應(yīng)用場景的詳細(xì)分析: 1.
    的頭像 發(fā)表于 10-10 13:58 ?802次閱讀

    UPS電源“不間斷點(diǎn)”全解析:技術(shù)原理、關(guān)鍵指標(biāo)與選購避坑指南

    的UPS解決方案。一、不間斷點(diǎn)的本質(zhì):毫秒級切換背后的技術(shù)博弈“不間斷點(diǎn)”是UPS的核心價值標(biāo)簽,指市電異常時,UPS輸出電力無感知切換(零延遲)的能力。其技術(shù)目
    的頭像 發(fā)表于 09-23 08:49 ?1429次閱讀
    UPS電源“不間<b class='flag-5'>斷點(diǎn)</b>”全解析:技術(shù)原理、關(guān)鍵指標(biāo)與選購避坑指南

    工業(yè)智能網(wǎng)關(guān)的斷點(diǎn)續(xù)傳功能體現(xiàn)在那些方面

    工業(yè)智能網(wǎng)關(guān)是連接工業(yè)設(shè)備(如PLC、傳感器、機(jī)器人、數(shù)控機(jī)床等)與云端平臺(如SCADA、MES、ERP等)的硬件或軟件設(shè)備,具備數(shù)據(jù)采集、協(xié)議轉(zhuǎn)換、邊緣計算、安全防護(hù)、斷點(diǎn)續(xù)傳等功能,是工業(yè)物
    的頭像 發(fā)表于 09-15 14:31 ?914次閱讀
    工業(yè)智能網(wǎng)關(guān)的<b class='flag-5'>斷點(diǎn)</b>續(xù)傳功能體現(xiàn)在那些方面

    MES - 制造執(zhí)行系統(tǒng)

    : 制藥業(yè):遵守嚴(yán)格的法規(guī)和質(zhì)量標(biāo)準(zhǔn) 醫(yī)療技術(shù):確保最高精度和質(zhì)量 航空航天業(yè):優(yōu)化復(fù)雜的制造流程 安全行業(yè):嚴(yán)格的文檔和質(zhì)量要求 那么,在這些領(lǐng)域中,MES 又能完成哪些具體任務(wù)呢?制造執(zhí)行
    發(fā)表于 09-04 15:36

    Task任務(wù):LuatOS實(shí)現(xiàn)“任務(wù)級并發(fā)”的核心引擎

    Task任務(wù)通過其強(qiáng)大的并發(fā)處理能力,使LuatOS能夠在單線程環(huán)境中模擬多線程執(zhí)行,通過協(xié)程的掛起與恢復(fù)機(jī)制,實(shí)現(xiàn)任務(wù)級的并行操作,顯著提升系統(tǒng)效能。 sys核心庫是LuatOS運(yùn)行框架庫,也是
    的頭像 發(fā)表于 08-28 13:49 ?654次閱讀
    Task<b class='flag-5'>任務(wù)</b>:LuatOS實(shí)現(xiàn)“<b class='flag-5'>任務(wù)</b>級并發(fā)”的核心引擎

    同步任務(wù)開發(fā)指導(dǎo)

    同步任務(wù)是指在多個線程之間協(xié)調(diào)執(zhí)行任務(wù),其目的是確保多個任務(wù)按照一定的順序和規(guī)則執(zhí)行,例如使用鎖來防止數(shù)據(jù)競爭。 同步
    發(fā)表于 06-19 07:57

    鴻蒙5開發(fā)寶藏案例分享---Web加載時延優(yōu)化解析

    鴻蒙開發(fā)寶藏:Web加載完成時延優(yōu)化實(shí)戰(zhàn) 大家好呀!今天在翻鴻蒙開發(fā)者文檔時,發(fā)現(xiàn)了一個隱藏的 性能優(yōu)化寶藏區(qū) ——官方竟然悄悄提供了多實(shí)戰(zhàn)案例!尤其是****Web加載完成時延分析這塊,簡直是
    發(fā)表于 06-12 17:11

    鴻蒙5開發(fā)寶藏案例分享---性能優(yōu)化案例解析

    發(fā)現(xiàn)問題 : // 頁面初始化時同步執(zhí)行耗時操作 aboutToAppear() { initData(); // 耗時2s的同步操作 } 優(yōu)化方案 : // 拆分為異步任務(wù)
    發(fā)表于 06-12 16:36

    HarmonyOS優(yōu)化應(yīng)用文件上傳下載慢問題性能優(yōu)化

    (一)文件上傳 對于大文件斷點(diǎn)續(xù)傳上傳,本文采用request(上傳下載)模塊中的request.agent任務(wù)托管接口,可以自動實(shí)現(xiàn)暫停繼續(xù)重試等操作,無需手動將文件分片和記錄上傳分片信息。流程圖
    發(fā)表于 05-28 15:06

    工控一體機(jī)多線程任務(wù)調(diào)度優(yōu)化:聚徽分享破解工業(yè)復(fù)雜流程高效協(xié)同密碼

    在當(dāng)今工業(yè) 4.0 的浪潮下,工業(yè)生產(chǎn)正朝著高度自動化、智能化的方向大步邁進(jìn)。生產(chǎn)流程日益復(fù)雜,眾多任務(wù)需要同時、高效地協(xié)同執(zhí)行,這對工業(yè)控制系統(tǒng)的核心 —— 工控一體機(jī)提出了前所未有的挑戰(zhàn)。多線程
    的頭像 發(fā)表于 05-28 14:06 ?755次閱讀

    HarmonyOS優(yōu)化應(yīng)用文件上傳下載慢問題性能優(yōu)化

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

    邊緣計算網(wǎng)關(guān)支持斷點(diǎn)續(xù)傳嗎

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

    HarmonyOS優(yōu)化應(yīng)用文件上傳下載慢問題性能優(yōu)化

    查詢指定任務(wù)信息、用戶查詢指定隱藏任務(wù)信息、系統(tǒng)查詢指定任務(wù)信息、系統(tǒng)清理指定任務(wù)等。 任務(wù)自動恢復(fù):網(wǎng)絡(luò)條件不滿足時
    發(fā)表于 05-26 15:50

    HarmonyOS優(yōu)化應(yīng)用文件上傳下載慢問題性能優(yōu)化

    參考該工程。 (三)文件上傳 對于大文件斷點(diǎn)續(xù)傳上傳,本文采用request(上傳下載)模塊中的request.agent任務(wù)托管接口,可以自動實(shí)現(xiàn)暫停繼續(xù)重試等操作,無需手動將文件分片和記錄上傳分片
    發(fā)表于 05-22 10:54
    石屏县| 金秀| 西丰县| 平潭县| 司法| 芜湖县| 林西县| 恩平市| 蚌埠市| 北辰区| 海丰县| 右玉县| 黄冈市| 桓台县| 奎屯市| 岳普湖县| 睢宁县| 营山县| 唐山市| 鄯善县| 安陆市| 日土县| 武宣县| 株洲市| 会昌县| 昆山市| 康保县| 连平县| 阳谷县| 香港| 阳新县| 霍城县| 安乡县| 从江县| 莱州市| 江山市| 抚宁县| 辽宁省| 双柏县| 崇州市| 建宁县|