中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CarbonData的修改和刪除怎么實現

發布時間:2021-12-16 16:22:38 來源:億速云 閱讀:166 作者:iii 欄目:大數據

這篇文章主要介紹“CarbonData的修改和刪除怎么實現”,在日常操作中,相信很多人在CarbonData的修改和刪除怎么實現問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”CarbonData的修改和刪除怎么實現”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

CarbonData是由華為開發、開源并支持Apache  Hadoop的列式存儲文件格式,支持索引、壓縮以及解編碼等,其目的是為了實現同一份數據達到多種需求,而且能夠實現更快的交互查詢。目前該項目正處于Apache孵化過程中。

當前,CarbonData暫不支持修改表中已經存在的數據。但是在現實情況下,我們可能很希望這個功能,比如修改維度表,事實表的數據校正以及數據清洗等。很多使用CarbonData的用戶很希望其能夠提供數據的修改和刪除功能。為此,社區已經有人提了Issue(CARBONDATA-440),其目標就是為CarbonData提供Update/Delete功能,這個功能應該會在CarbonData  0.3.0版本發布。本文將介紹CarbonData的Update/Delete功能設計實現。下面是實現這個功能的高層次設計目標:

(1)、提供標準的SQL接口,以便能夠執行更新和刪除操作;

(2)、對CarbonData表執行更新和刪除操作的時候,不需要對已經存在的整個CarbonData塊重寫,而是將修改寫到差異文件中(differential  files);

(3)、在更新和刪除操作之后,CarbonData  readers應該能夠跳過刪除的記錄,并且能夠無縫地讀取更新的記錄,而這些操作不需要用戶更新自己的應用程序。

更新操作實現

我們都知道,CarbonData的數據是存儲在HDFS之上,而HDFS中的文件是不可修改的(immutable),所以CarbonData的數據塊并不能原地進行修改。更新數據的一種方法就是刪除和重寫整個數據塊。然而這種方法的效率很低,會導致性能瓶頸。其實我們可以把更新操作認為是先"刪除",然后"插入",這也就是CarbonData中更新的實現。下面我將詳細地介紹CarbonData的更新操作實現:CarbonData的更新操作分為以下兩步:

CarbonData的修改和刪除怎么實現

1、***步包括兩個部分:

(1)、首先,CarbonData能夠通過執行過濾和Join操作識別出需要更新的行。為了能夠***標識行數據,CarbonData會使用到ROWID屬性。一旦需要更新的數據被標識后,這些數據將會在單獨的文件中被標識為deleted,而且這些文件是存放在當前表的目錄下,這些文件被稱為"Delete  Delt"。

(2)、然后,CarbonData將會從源表中收集需要更新的列值并組成新的一行。新的行數據是由更新后的列值和目標表現有的列值數據組成的。這些更新的行數據將會在Spark處理層組成一個源RDD。

2、第二步:CarbonData將會使用現有的數據加載方法將源RDD中的行數據轉換成CarbobData數據格式。這個操作類似于數據的增量加載。這個新創建的CarbonData文件稱為"Update  Delta"。Update Delta文件將存儲在同一個segment中,而且Update  Delta本身擁有btree和塊級別的統計,正如正常的CabonData文件。這個新的btree應該追加到全局的btree中,并且緩存起來。

下面就是CabonData更新操作的時序圖:

CarbonData的修改和刪除怎么實現

刪除操作的實現

在刪除數據的情況,CarbonData也是通過過濾和Join操作來識別需要刪除的行。為了能夠***標識行數據,CarbonData會使用到ROWID屬性。一旦需要刪除的數據被標識后,這些數據將會在單獨的文件中被標識為deleted,這個文件也稱為"Delete  Delta"文件。CarbonData記錄掃描程序將會把這些刪除的文件排除到結果集之外。在刪除操作之后,CarbonData不需要更新全局字典表,因為字典表中有些entries對其他的segment還是有效的。

刪除操作的原子性

CarbonData的刪除操作具有原子性,也就是說,刪除的數據要么全部被刪除,要么全部都沒刪除。刪除操作產生的Delete  delta文件在刪除操作仍然進行時,對readers事不可見的;只有刪除操作成功進行,新刪除的行數據才會對readers可見。刪除的操作如下圖所示:

CarbonData的修改和刪除怎么實現

下面就是CabonData刪除操作的時序圖:

CarbonData的修改和刪除怎么實現

文件合并

對每次更新操作,都會產生update delta 和 delete  delta文件,隨著頻繁地更新和刪除操作,會產生越來越多的delta文件。這將會產生許多小文件,這可能會影響scan操作的性能,所以我們需要將這些delta文件合并成單獨的delta文件。將許多個delta文件合并成一個delta文件的操作稱為compaction或  minor compaction. 操作如下:

CarbonData的修改和刪除怎么實現

而且compaction操作可以通過配置達到多少個delta  files來觸發。在刪除或者更新操作之后,如果delta文件的數量達到了配置的閾值,compaction操作將會觸發。

到此,關于“CarbonData的修改和刪除怎么實現”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安乡县| 旬阳县| 中方县| 财经| 威远县| 涡阳县| 义乌市| 博野县| 望谟县| 扶余县| 石景山区| 玉龙| 珲春市| 凯里市| 法库县| 宜章县| 兰州市| 搜索| 永丰县| 桂阳县| 平南县| 岚皋县| 南充市| 炎陵县| 寻甸| 吉林省| 大埔区| 塘沽区| 方正县| 连山| 墨竹工卡县| 漳平市| 禄丰县| 霍山县| 岫岩| 南投市| 济源市| 和政县| 平南县| 蒲江县| 建宁县|