很可惜 T 。T 您現(xiàn)在還不是作者身份,不能自主發(fā)稿哦~
如有投稿需求,請把文章發(fā)送到郵箱tougao@appcpx.com,一經(jīng)錄用會有專人和您聯(lián)系
咨詢?nèi)绾纬蔀榇河鹱髡哒埪?lián)系:鳥哥筆記小羽毛(ngbjxym)
昨天群里突然有人問了一個(gè)這個(gè)問題:
我最早聽說 ELT 的時(shí)候也楞了一下,只不過簡單琢磨了一下就放下了。今天重新聽到,其實(shí)也沒啥感覺。
反正有人也給出了最言簡意賅的解釋:
然后就有人蒙圈了??!這都行?
還有人猜:
額。。。其實(shí)吧, ETL 和 ELT 還真的只是順序不一樣。
ETL 是Extract(抽?。?、Transform(轉(zhuǎn)換)、Load(加載);
ELT 是Extract(抽?。oad(加載)、Transform(轉(zhuǎn)換)。
你是不是會感覺這幫搞數(shù)倉的整天就知道裝神弄鬼,整點(diǎn)新詞兒忽悠人!
額...你要是這么想,那可就小看了我們數(shù)倉人了,小看了架構(gòu)這件事情了。來,我今天就給你細(xì)細(xì)的講一講 ETL 和 ELT 到底是咋回事。
你可以瞧不起我,但是你不能瞧不起我的專業(yè)!
老數(shù)倉人做項(xiàng)目,都是一板一眼,很有章法的。
我們一般會先從業(yè)務(wù)系統(tǒng)開始調(diào)研,摸清楚所有數(shù)據(jù)來源的數(shù)據(jù)結(jié)構(gòu)。
同時(shí)會去了解業(yè)務(wù)流程,看看業(yè)務(wù)到底是怎么運(yùn)轉(zhuǎn)的,系統(tǒng)又是怎么留痕的,這樣兩下驗(yàn)證,邏輯上就通了。
其實(shí)到這一步,我們就能知道很多信息了,經(jīng)驗(yàn)豐富的人基本上已經(jīng)在腦子里猜到用戶的需求,開始設(shè)計(jì)報(bào)表了。
那下一步自然是去獲取用戶需求,規(guī)劃上面的即席查詢、多維分析、固定報(bào)表、儀表盤啥的數(shù)據(jù)應(yīng)用了。
然后就是各種的分主題域、分層、邏輯模型咔咔一頓操作猛如虎。
如果您還有印象,應(yīng)該記得我之前寫過數(shù)倉建設(shè)步驟:
注意看上圖最后一個(gè)步驟“物理建?!?,從這時(shí)候起,我們才真正開始大規(guī)模的在數(shù)據(jù)倉庫中建表,也就是落地執(zhí)行了。
再往后呢?就是 ETL 了,從業(yè)務(wù)系統(tǒng)搬數(shù)據(jù)到ODS(Extract抽取),然后像流水線一樣,處理一個(gè)環(huán)節(jié)(Transform轉(zhuǎn)換),再放到一個(gè)框里(Load加載),再處理一個(gè)環(huán)節(jié),再放到一個(gè)框里(數(shù)倉某一層)。
這就是DWD、DWB、DWS、DM等數(shù)倉各層的建設(shè),就這樣一層層的先處理數(shù)據(jù),再加載到本層數(shù)倉,然后下一層再處理數(shù)據(jù),再加載到過去。
所以,整個(gè)數(shù)據(jù)處理和流轉(zhuǎn)的過程就是 ETL ,也就是先Extract(抽?。?,再Transform(轉(zhuǎn)換),最后Load(加載)了。
流水線最大的好處是在固定的處理環(huán)節(jié)前提下,建設(shè)效率最快,成本最優(yōu),建好之后基本上只需要維護(hù)就行了。
我有幾個(gè)朋友是普通公司數(shù)據(jù)負(fù)責(zé)人,數(shù)據(jù)建設(shè)工作結(jié)束后,整個(gè)團(tuán)隊(duì)很輕松。每天基本上就是看看任務(wù)有沒有問題,處理一些簡單的報(bào)表維護(hù)工作。
想必你也看出來了, ETL 非常適應(yīng)需求比較清晰、業(yè)務(wù)比較固定的場景。
但是,為啥又出來一個(gè) ELT ???
很簡單,因?yàn)榇笄逋隽税。?/span>
ETL 很好用,自動處理所有數(shù)據(jù),把數(shù)據(jù)規(guī)規(guī)整整的碼放在數(shù)據(jù)倉庫里供各方調(diào)取。
ETL 也很簡單,基本上都是可視化、低代碼的形式,設(shè)計(jì)好流程就行了。
ETL 的成本很低,一次性建設(shè),之后就不用重復(fù)投入,只需要每天看看跑批任務(wù)有沒有問題就行了。所以很多人的重點(diǎn)工作都是運(yùn)維。
但是 ETL 也有非常致命的缺點(diǎn):流程太長、太笨重、時(shí)間太長,改起來成本太高了?。?!
反正我是不想改別人做的 ETL 的,太痛苦了。我甚至連自己寫的都不想動。因?yàn)?span > ETL 程序通常是把 E 和 L 放在一起做,這就導(dǎo)致單個(gè)程序中的邏輯經(jīng)常非常非常復(fù)雜的。
先給你來一個(gè)簡單的:
Dolphin Schedul 的代立冬代總還給了我一個(gè)文藝一些的:
是不是挺復(fù)雜的?這還不算啥,我再給你看一個(gè)復(fù)雜的:
好像沒啥是吧?還沒上面一張圖里的節(jié)點(diǎn)多是吧?其實(shí)這是因?yàn)橐粡垐D根本放不下!
提供這張圖的兄弟“跨越新生”告訴我,這一共 1100 多個(gè)節(jié)點(diǎn)!他親手設(shè)計(jì)的!
不過我就想問問他,現(xiàn)在敢動不敢動!敢不敢?嘿嘿~~~
他不敢啊!所以他最怕什么?最怕改需求,最怕改業(yè)務(wù)庫!
如果業(yè)務(wù)或者底層數(shù)據(jù)要?jiǎng)右幌拢?span > ETL 流程就要隨之進(jìn)行調(diào)整。簡單的邏輯還好處理,一旦遇到“跨越新生”兄弟的這個(gè)局面,別的不說,光找節(jié)點(diǎn)就得找死人?。?/span>
所以, ETL 開發(fā)很簡單,但是維護(hù)成本奇高無比!復(fù)雜度奇高無比!工作難度奇高無比!
業(yè)務(wù)的頻繁變化,再加上 ETL 的時(shí)間成本和吞吐量限制(堵塞),所以導(dǎo)致 ETL 這種數(shù)據(jù)加工的方式不能滿足于現(xiàn)在的企業(yè)發(fā)展需要啊。
那咋辦?
當(dāng)然是改變了!
但是,咋變?
誒,有聰明的兄弟就說了,把 ETL 變成 ELT ??!
對,但是沒說到點(diǎn)子上。
并不是單純的把流程倒置這么簡單的,咱還得回到 ETL 問題的根本。
ETL 之所以這么復(fù)雜,是因?yàn)?Transform (轉(zhuǎn)換)和 Load (加載)兩個(gè)環(huán)節(jié)耦合過緊導(dǎo)致的。
我們用最樸素的架構(gòu)思維想一下就明白了,讓復(fù)雜的事情變簡單,最簡單的方式是啥?
“拆”字訣!
把 Transform (轉(zhuǎn)換)和 Load (加載)哥倆拆開了就行了,這樣處理數(shù)據(jù)的部分就專心計(jì)算就行了,搬運(yùn)數(shù)據(jù)的部分就專心搬運(yùn)就好了,別混在一起四腳八叉的。
所以, ETL 工具就變成了搬運(yùn)組件、計(jì)算引擎和調(diào)度引擎。
搬運(yùn)組件專門負(fù)責(zé)搬運(yùn)數(shù)據(jù),不做任何數(shù)據(jù)處理的操作;
計(jì)算引擎專門負(fù)責(zé)進(jìn)行數(shù)據(jù)處理,其他事情跟我沒關(guān)系;
調(diào)度引擎專門負(fù)責(zé)做流程編排,其他事情也跟我沒關(guān)系。
有哥們會問, ETL 工具跑哪里去了?是這樣的,我們需要把 ETL 和 ETL 工具分開哈。這里的 ETL 特指數(shù)據(jù)處理流程。
在上面的步驟中,也是可以用 ETL 工具代替的。畢竟 ETL 工具全能嘛,這三件事情都是能做的哈。
既然是整個(gè)工作流都拆開了,那流程也自然就有變化了。第一步?jīng)]啥變化,但是之后的事情就不太一樣了,整體就變成這個(gè)德行:
需要注意的是:上面這個(gè)架構(gòu)只是示意哈,里面的所有具體的組件都是可以換的。
比如說抽取這個(gè)動作,你可以用 ETL 工具,可以用 Kafka,這種神奇的東西最大的好處就是吞吐量極大,任你來多少數(shù)據(jù)都能吃的下。
ODS 可以是數(shù)倉的 ODS,也可以是數(shù)據(jù)湖,奇葩一些用 Kafka 也沒問題,別重復(fù)了就行。
加載這個(gè)動作也可以用 Kafka 或者啥 ETL 工具都行;
計(jì)算引擎你用 Spark 還是 Flink 還是 MR 都隨意,反正只要能跑任務(wù)就行,最后直接輸出到 HBase 也行,扔到 Kafka 或者 Redis 都可以。
你現(xiàn)在再看看對比一下兩張圖就會發(fā)現(xiàn)為啥是 ETL 和 ELT 了。
那 ELT 有啥好處呢?
最底層的改變是E、T、L徹底的解耦了。解耦之后好處多多,比如突破性能瓶頸、程序簡化、組件替換、維護(hù)成本降低等等。
不過最重要的還是解耦導(dǎo)致的極致的靈活,可以適應(yīng)當(dāng)前復(fù)雜多變的市場環(huán)境。
因?yàn)樵趶?fù)雜多變的環(huán)境下, ETL 這種傳統(tǒng)的數(shù)據(jù)處理套路是極度不適應(yīng)的。
等你慢慢分主題域、抽取實(shí)體、建好模型、寫各種代碼、各種調(diào)試,好不容易出一張報(bào)表的時(shí)候,業(yè)務(wù)過來跟你說:哥,咱的打法變了,APP 都迭代了 3 輪了,這是新需求。你上哪哭去?
所以現(xiàn)在很多大廠的新業(yè)務(wù)中,都在弱化建模,強(qiáng)化效率,用的其實(shí)就是 ELT 的邏輯。
數(shù)據(jù)直接入湖,然后寫個(gè)腳本扔 Spark 里跑,直接拖張寬表扔庫里,然后懟到一個(gè)報(bào)表展示工具完事了。
這又不得不提到那個(gè)百度的小伙伴在脈脈上提的問題:
其實(shí),哥們就是在 ELT ,而不是在 ETL 啊。因?yàn)镋TL得建模,ELT就能靈活到直接拖個(gè)寬表完事的地步。
時(shí)代一直在變,技術(shù)也是在不停的變。我們需要做的事情是持續(xù)學(xué)習(xí),不斷精進(jìn),深度思考。關(guān)注我,我們攜手同行!
感謝閱讀,本次分享的內(nèi)容就結(jié)束了。也歡迎大家加我微信,咱倆私聊啊
推薦閱讀:
傳統(tǒng)數(shù)倉和大數(shù)據(jù)數(shù)倉的區(qū)別是什么?
數(shù)倉已死?數(shù)據(jù)湖當(dāng)立!
更多精彩:
本文為作者獨(dú)立觀點(diǎn),不代表鳥哥筆記立場,未經(jīng)允許不得轉(zhuǎn)載。
《鳥哥筆記版權(quán)及免責(zé)申明》 如對文章、圖片、字體等版權(quán)有疑問,請點(diǎn)擊 反饋舉報(bào)
我們致力于提供一個(gè)高質(zhì)量內(nèi)容的交流平臺。為落實(shí)國家互聯(lián)網(wǎng)信息辦公室“依法管網(wǎng)、依法辦網(wǎng)、依法上網(wǎng)”的要求,為完善跟帖評論自律管理,為了保護(hù)用戶創(chuàng)造的內(nèi)容、維護(hù)開放、真實(shí)、專業(yè)的平臺氛圍,我們團(tuán)隊(duì)將依據(jù)本公約中的條款對注冊用戶和發(fā)布在本平臺的內(nèi)容進(jìn)行管理。平臺鼓勵(lì)用戶創(chuàng)作、發(fā)布優(yōu)質(zhì)內(nèi)容,同時(shí)也將采取必要措施管理違法、侵權(quán)或有其他不良影響的網(wǎng)絡(luò)信息。
一、根據(jù)《網(wǎng)絡(luò)信息內(nèi)容生態(tài)治理規(guī)定》《中華人民共和國未成年人保護(hù)法》等法律法規(guī),對以下違法、不良信息或存在危害的行為進(jìn)行處理。
1. 違反法律法規(guī)的信息,主要表現(xiàn)為:
1)反對憲法所確定的基本原則;
2)危害國家安全,泄露國家秘密,顛覆國家政權(quán),破壞國家統(tǒng)一,損害國家榮譽(yù)和利益;
3)侮辱、濫用英烈形象,歪曲、丑化、褻瀆、否定英雄烈士事跡和精神,以侮辱、誹謗或者其他方式侵害英雄烈士的姓名、肖像、名譽(yù)、榮譽(yù);
4)宣揚(yáng)恐怖主義、極端主義或者煽動實(shí)施恐怖活動、極端主義活動;
5)煽動民族仇恨、民族歧視,破壞民族團(tuán)結(jié);
6)破壞國家宗教政策,宣揚(yáng)邪教和封建迷信;
7)散布謠言,擾亂社會秩序,破壞社會穩(wěn)定;
8)宣揚(yáng)淫穢、色情、賭博、暴力、兇殺、恐怖或者教唆犯罪;
9)煽動非法集會、結(jié)社、游行、示威、聚眾擾亂社會秩序;
10)侮辱或者誹謗他人,侵害他人名譽(yù)、隱私和其他合法權(quán)益;
11)通過網(wǎng)絡(luò)以文字、圖片、音視頻等形式,對未成年人實(shí)施侮辱、誹謗、威脅或者惡意損害未成年人形象進(jìn)行網(wǎng)絡(luò)欺凌的;
12)危害未成年人身心健康的;
13)含有法律、行政法規(guī)禁止的其他內(nèi)容;
2. 不友善:不尊重用戶及其所貢獻(xiàn)內(nèi)容的信息或行為。主要表現(xiàn)為:
1)輕蔑:貶低、輕視他人及其勞動成果;
2)誹謗:捏造、散布虛假事實(shí),損害他人名譽(yù);
3)嘲諷:以比喻、夸張、侮辱性的手法對他人或其行為進(jìn)行揭露或描述,以此來激怒他人;
4)挑釁:以不友好的方式激怒他人,意圖使對方對自己的言論作出回應(yīng),蓄意制造事端;
5)羞辱:貶低他人的能力、行為、生理或身份特征,讓對方難堪;
6)謾罵:以不文明的語言對他人進(jìn)行負(fù)面評價(jià);
7)歧視:煽動人群歧視、地域歧視等,針對他人的民族、種族、宗教、性取向、性別、年齡、地域、生理特征等身份或者歸類的攻擊;
8)威脅:許諾以不良的后果來迫使他人服從自己的意志;
3. 發(fā)布垃圾廣告信息:以推廣曝光為目的,發(fā)布影響用戶體驗(yàn)、擾亂本網(wǎng)站秩序的內(nèi)容,或進(jìn)行相關(guān)行為。主要表現(xiàn)為:
1)多次發(fā)布包含售賣產(chǎn)品、提供服務(wù)、宣傳推廣內(nèi)容的垃圾廣告。包括但不限于以下幾種形式:
2)單個(gè)帳號多次發(fā)布包含垃圾廣告的內(nèi)容;
3)多個(gè)廣告帳號互相配合發(fā)布、傳播包含垃圾廣告的內(nèi)容;
4)多次發(fā)布包含欺騙性外鏈的內(nèi)容,如未注明的淘寶客鏈接、跳轉(zhuǎn)網(wǎng)站等,誘騙用戶點(diǎn)擊鏈接
5)發(fā)布大量包含推廣鏈接、產(chǎn)品、品牌等內(nèi)容獲取搜索引擎中的不正當(dāng)曝光;
6)購買或出售帳號之間虛假地互動,發(fā)布干擾網(wǎng)站秩序的推廣內(nèi)容及相關(guān)交易。
7)發(fā)布包含欺騙性的惡意營銷內(nèi)容,如通過偽造經(jīng)歷、冒充他人等方式進(jìn)行惡意營銷;
8)使用特殊符號、圖片等方式規(guī)避垃圾廣告內(nèi)容審核的廣告內(nèi)容。
4. 色情低俗信息,主要表現(xiàn)為:
1)包含自己或他人性經(jīng)驗(yàn)的細(xì)節(jié)描述或露骨的感受描述;
2)涉及色情段子、兩性笑話的低俗內(nèi)容;
3)配圖、頭圖中包含庸俗或挑逗性圖片的內(nèi)容;
4)帶有性暗示、性挑逗等易使人產(chǎn)生性聯(lián)想;
5)展現(xiàn)血腥、驚悚、殘忍等致人身心不適;
6)炒作緋聞、丑聞、劣跡等;
7)宣揚(yáng)低俗、庸俗、媚俗內(nèi)容。
5. 不實(shí)信息,主要表現(xiàn)為:
1)可能存在事實(shí)性錯(cuò)誤或者造謠等內(nèi)容;
2)存在事實(shí)夸大、偽造虛假經(jīng)歷等誤導(dǎo)他人的內(nèi)容;
3)偽造身份、冒充他人,通過頭像、用戶名等個(gè)人信息暗示自己具有特定身份,或與特定機(jī)構(gòu)或個(gè)人存在關(guān)聯(lián)。
6. 傳播封建迷信,主要表現(xiàn)為:
1)找人算命、測字、占卜、解夢、化解厄運(yùn)、使用迷信方式治??;
2)求推薦算命看相大師;
3)針對具體風(fēng)水等問題進(jìn)行求助或咨詢;
4)問自己或他人的八字、六爻、星盤、手相、面相、五行缺失,包括通過占卜方法問婚姻、前程、運(yùn)勢,東西寵物丟了能不能找回、取名改名等;
7. 文章標(biāo)題黨,主要表現(xiàn)為:
1)以各種夸張、獵奇、不合常理的表現(xiàn)手法等行為來誘導(dǎo)用戶;
2)內(nèi)容與標(biāo)題之間存在嚴(yán)重不實(shí)或者原意扭曲;
3)使用夸張標(biāo)題,內(nèi)容與標(biāo)題嚴(yán)重不符的。
8.「飯圈」亂象行為,主要表現(xiàn)為:
1)誘導(dǎo)未成年人應(yīng)援集資、高額消費(fèi)、投票打榜
2)粉絲互撕謾罵、拉踩引戰(zhàn)、造謠攻擊、人肉搜索、侵犯隱私
3)鼓動「飯圈」粉絲攀比炫富、奢靡享樂等行為
4)以號召粉絲、雇用網(wǎng)絡(luò)水軍、「養(yǎng)號」形式刷量控評等行為
5)通過「蹭熱點(diǎn)」、制造話題等形式干擾輿論,影響傳播秩序
9. 其他危害行為或內(nèi)容,主要表現(xiàn)為:
1)可能引發(fā)未成年人模仿不安全行為和違反社會公德行為、誘導(dǎo)未成年人不良嗜好影響未成年人身心健康的;
2)不當(dāng)評述自然災(zāi)害、重大事故等災(zāi)難的;
3)美化、粉飾侵略戰(zhàn)爭行為的;
4)法律、行政法規(guī)禁止,或可能對網(wǎng)絡(luò)生態(tài)造成不良影響的其他內(nèi)容。
二、違規(guī)處罰
本網(wǎng)站通過主動發(fā)現(xiàn)和接受用戶舉報(bào)兩種方式收集違規(guī)行為信息。所有有意的降低內(nèi)容質(zhì)量、傷害平臺氛圍及欺凌未成年人或危害未成年人身心健康的行為都是不能容忍的。
當(dāng)一個(gè)用戶發(fā)布違規(guī)內(nèi)容時(shí),本網(wǎng)站將依據(jù)相關(guān)用戶違規(guī)情節(jié)嚴(yán)重程度,對帳號進(jìn)行禁言 1 天、7 天、15 天直至永久禁言或封停賬號的處罰。當(dāng)涉及欺凌未成年人、危害未成年人身心健康、通過作弊手段注冊、使用帳號,或者濫用多個(gè)帳號發(fā)布違規(guī)內(nèi)容時(shí),本網(wǎng)站將加重處罰。
三、申訴
隨著平臺管理經(jīng)驗(yàn)的不斷豐富,本網(wǎng)站出于維護(hù)本網(wǎng)站氛圍和秩序的目的,將不斷完善本公約。
如果本網(wǎng)站用戶對本網(wǎng)站基于本公約規(guī)定做出的處理有異議,可以通過「建議反饋」功能向本網(wǎng)站進(jìn)行反饋。
(規(guī)則的最終解釋權(quán)歸屬本網(wǎng)站所有)