亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創(chuang)

深?理解Hudi UpSert原理(一)

2024-05-30 08:45:33
48
0

第一部分 知識準備
     

?家在學習hudi的(de)(de)時候,上?這(zhe)張圖(tu)?定是(shi)(shi)最先看(kan)到的(de)(de),也是(shi)(shi)看(kan)到最多的(de)(de),但是(shi)(shi)每次(ci)看(kan)到這(zhe)張圖(tu),相(xiang)信?家都有共(gong)同(tong)的(de)(de)疑問:TimeLine是(shi)(shi)啥?Commit是(shi)(shi)啥?這(zhe)些東?結合在?起如(ru)何實現(xian)hudi的(de)(de)準實時查詢,如(ru)何實現(xian)HUDI的(de)(de)CRUD語義,本(ben)篇?章我們以Spark On Hudi為例,通過分析(xi)Spark On Hudi的(de)(de) UpSert流程,深?理解Hudi的(de)(de)內部機制。

?、什么是TimeLine

個?理解TimeLine是將?戶感(gan)興(xing)趣(qu)的(de)(de),針對對Hudi表的(de)(de)變更操(cao)(cao)作,從時間維(wei)度上連接起來,?戶可以通過(guo)timeline找到某個時間范圍內(nei)??感(gan)興(xing)趣(qu)操(cao)(cao)作的(de)(de)元(yuan)數據,?如數據的(de)(de)增加/修改(gai)/刪除(chu),或(huo)者由Hudi后臺運?的(de)(de)clean/compact/clustering操(cao)(cao)作。所(suo)以TimeLine是由?些在時間維(wei)度上有(you)先后關系的(de)(de),對hudi表有(you)更新(xin)的(de)(de)操(cao)(cao)作的(de)(de)元(yuan)數據的(de)(de)集合,在hudi的(de)(de)源碼中可以隨(sui)處看(kan)到創建TimeLine的(de)(de)操(cao)(cao)作,?如

以上代(dai)碼就是將hudi表未完成的Compact操(cao)作過濾(lv)出來,并創建新的TimeLine 。

TimeLine主要由instances、details和metaClient組成
 (?)instances就是對hudi表操作的集合,TimeLine會掃描hudi表的.hoodie路徑下的擁有合法擴展名的所有?件,并創建對應的HoodieInstance,最后加?到instances集合

 HoodieInstance就是某個時間點對hoodie表的修改操作,每個HoodieInstance都有針對的操作以及所屬的狀態
 HoodieInstance常?的操作有:commit、deltacommit、clean、rollback、compaction
 HoodieInstance對應的狀態有:REQUESTED、INFLIGHT、COMPLETED、INVALID
 不(bu)同的操(cao)作以及狀(zhuang)態(tai)的組合對(dui)應(ying)了不(bu)同的instance?件名,如下:

(?)details是(shi)?個函數(shu)成(cheng)員,定(ding)義了怎(zen)么(me)從(cong)給定(ding)的instance中讀取元數(shu)據內容

(三)metaClient?于獲取元數(shu)據位于的?件(jian)系統以及路徑

?、表存儲結構

下?我們來梳理下hudi中與表存儲結構相關的概念:Partition、FileGroup、FileID、Slice、BaseFile、
LogFile等(deng)概念:

(?)hudi表根據partition進?分區,和所有流?的OLAP查詢引擎數據存儲?式?樣,根據分區減少
數據的訪問量
 
(?)partition下以?件的形式保存了hudi表數據,不同表類型保存的?件形式不?樣。?個分區下的
數據?般需要分為若??件(和Hive?樣)。
 
(三)COW表(biao)數據在(zai)BaseFile中,?MOR表(biao)在(zai)BaseFile和LogFile?件中

實際的(de)?產環境如圖所示(shi)

(四)為了?持Hudi表的修改操作,?件有不同的版本,每個版本稱為slice,?個?件所有的slice(版本)組合起來就是?個FileGroup。
 
總結?下,?個hudi表由不同的partition組成,?個partition中的數據分散在不同的FileGroup中,FileGroup通過FileGroupID標識,FileGroupID由partitionPath以及FileID組成。FileGroup由不同的slice組成,slice表示不同時間提交的數據版本,COW的slice由BaseFile組成,MOR的slice由
BaseFile+LogFile組成,?個FileGroup下的slice擁有(you)相同的FileId,通過FileId+instanceTime可以定位到?個具體(ti)的BaseFile或者FileGroup。

Copy On Write表(biao)

接下(xia)來我們再把這些概念(nian)串(chuan)起來,看看不同表類(lei)型upsert的整(zheng)體流程

0條評論
0 / 1000
王****聰
2文(wen)章(zhang)數
0粉絲數
王****聰
2 文章 | 0 粉絲
王****聰
2文章數
0粉絲數
王****聰
2 文章 | 0 粉絲
原(yuan)創

深?理解Hudi UpSert原理(一)

2024-05-30 08:45:33
48
0

第一部分 知識準備
     

?家(jia)在學習(xi)hudi的(de)(de)(de)時候,上?這張圖?定是最先看到的(de)(de)(de),也是看到最多(duo)的(de)(de)(de),但是每(mei)次看到這張圖,相(xiang)信?家(jia)都有共同的(de)(de)(de)疑問(wen):TimeLine是啥(sha)?Commit是啥(sha)?這些(xie)東?結合在?起(qi)如(ru)何實(shi)現hudi的(de)(de)(de)準實(shi)時查詢(xun),如(ru)何實(shi)現HUDI的(de)(de)(de)CRUD語義(yi),本篇?章(zhang)我們(men)以(yi)Spark On Hudi為例,通(tong)過分析Spark On Hudi的(de)(de)(de) UpSert流程,深?理解Hudi的(de)(de)(de)內部機制。

?、什么是TimeLine

個(ge)?理解(jie)TimeLine是將?戶感(gan)興(xing)趣(qu)的(de),針對對Hudi表(biao)的(de)變(bian)更操作(zuo),從時(shi)(shi)間(jian)維度(du)上連接起(qi)來,?戶可以通(tong)過timeline找到某(mou)個(ge)時(shi)(shi)間(jian)范圍內??感(gan)興(xing)趣(qu)操作(zuo)的(de)元數(shu)據,?如數(shu)據的(de)增加/修改/刪除(chu),或者由(you)Hudi后臺運(yun)?的(de)clean/compact/clustering操作(zuo)。所(suo)以TimeLine是由(you)?些在(zai)(zai)時(shi)(shi)間(jian)維度(du)上有先后關(guan)系(xi)的(de),對hudi表(biao)有更新的(de)操作(zuo)的(de)元數(shu)據的(de)集合,在(zai)(zai)hudi的(de)源碼中可以隨(sui)處(chu)看到創建TimeLine的(de)操作(zuo),?如

以上代碼就(jiu)是將hudi表未完成(cheng)的Compact操(cao)作過濾出來,并創建(jian)新的TimeLine 。

TimeLine主要由instances、details和metaClient組成
 (?)instances就是對hudi表操作的集合,TimeLine會掃描hudi表的.hoodie路徑下的擁有合法擴展名的所有?件,并創建對應的HoodieInstance,最后加?到instances集合

 HoodieInstance就是某個時間點對hoodie表的修改操作,每個HoodieInstance都有針對的操作以及所屬的狀態
 HoodieInstance常?的操作有:commit、deltacommit、clean、rollback、compaction
 HoodieInstance對應的狀態有:REQUESTED、INFLIGHT、COMPLETED、INVALID
 不同(tong)(tong)的(de)操作(zuo)以及狀態的(de)組合對應了不同(tong)(tong)的(de)instance?件名,如下:

(?)details是(shi)?個(ge)函數成員,定義了怎么從給定的instance中讀(du)取(qu)元數據內容

(三)metaClient?于獲取(qu)元數(shu)據位(wei)于的(de)?件系統以及路徑

?、表存儲結構

下?我們來梳理下hudi中與表存儲結構相關的概念:Partition、FileGroup、FileID、Slice、BaseFile、
LogFile等概(gai)念:

(?)hudi表根據partition進?分區,和所有流?的OLAP查詢引擎數據存儲?式?樣,根據分區減少
數據的訪問量
 
(?)partition下以?件的形式保存了hudi表數據,不同表類型保存的?件形式不?樣。?個分區下的
數據?般需要分為若??件(和Hive?樣)。
 
(三(san))COW表數據在BaseFile中(zhong),?MOR表在BaseFile和(he)LogFile?件(jian)中(zhong)

實際(ji)的?產環境如(ru)圖所示(shi)

(四)為了?持Hudi表的修改操作,?件有不同的版本,每個版本稱為slice,?個?件所有的slice(版本)組合起來就是?個FileGroup。
 
總結?下,?個hudi表由不同的partition組成,?個partition中的數據分散在不同的FileGroup中,FileGroup通過FileGroupID標識,FileGroupID由partitionPath以及FileID組成。FileGroup由不同的slice組成,slice表示不同時間提交的數據版本,COW的slice由BaseFile組成,MOR的slice由
BaseFile+LogFile組(zu)成,?個FileGroup下的slice擁有相同的FileId,通(tong)過FileId+instanceTime可以定(ding)位到?個具體(ti)的BaseFile或(huo)者FileGroup。

Copy On Write表

接下來我們再(zai)把這(zhe)些概念串(chuan)起來,看(kan)看(kan)不同表類(lei)型(xing)upsert的整(zheng)體流程

文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0