日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Compaction可以把所有的數(shù)據(jù)文件按照一定策略進(jìn)行Merge操作,可提升查詢效率。

功能介紹

Delta Table支持近實(shí)時(shí)增量寫(xiě)入和time travel查詢特性,在數(shù)據(jù)頻繁寫(xiě)入的場(chǎng)景中,必然會(huì)引入大量的小文件,需要設(shè)計(jì)合理高效的合并策略來(lái)對(duì)小文件進(jìn)行合并以及數(shù)據(jù)去重,解決大量小文件讀寫(xiě)IO低效以及緩解存儲(chǔ)系統(tǒng)的壓力,但也要避免頻繁Compact引發(fā)嚴(yán)重的寫(xiě)放大和沖突失敗。

目前主要支持兩種數(shù)據(jù)合并方式:

  • Clustering:只是把Commit的DeltaFile合并成一個(gè)大文件,不改變數(shù)據(jù)內(nèi)容。系統(tǒng)內(nèi)部會(huì)根據(jù)新增的文件大小、文件數(shù)量等因素周期性地執(zhí)行,不需要用戶手動(dòng)操作。主要解決小文件IO讀寫(xiě)效率和穩(wěn)定性問(wèn)題。

  • Compaction:會(huì)把所有的數(shù)據(jù)文件按照一定策略進(jìn)行Merge操作,生成一批新的BaseFile,相同PK的數(shù)據(jù)行只存儲(chǔ)最新的狀態(tài),不包含任何歷史狀態(tài),也不會(huì)包含任何系統(tǒng)列信息,主要用于提升查詢效率。

命令格式

alter table <table_name> [partition 
                          (<partition_key> = '<partition_value>' [, ...])
                         ] 
                         compact major;

注意事項(xiàng)

  • 手動(dòng)執(zhí)行Compaction需要依賴設(shè)置一個(gè)flag。

     set odps.merge.task.mode=service;
  • Compaction會(huì)產(chǎn)生新的文件,雖然可以提升查詢效率,但也要承擔(dān)對(duì)應(yīng)的數(shù)據(jù)文件存儲(chǔ)成本,您需要根據(jù)業(yè)務(wù)場(chǎng)景進(jìn)行權(quán)衡,選擇合適的觸發(fā)頻率。

  • Compaction會(huì)使用計(jì)算資源對(duì)數(shù)據(jù)進(jìn)行讀取重寫(xiě),若您是按量付費(fèi)模式,將產(chǎn)生Compaction費(fèi)用,其計(jì)費(fèi)方式為掃描量*1*單價(jià),詳情請(qǐng)參見(jiàn)計(jì)算費(fèi)用(按量付費(fèi))。若您是包年包月付費(fèi)模式,那么Compaction會(huì)使用包年包月的計(jì)算資源額度。

使用示例

--創(chuàng)建表
create table mf_dt (pk bigint not null primary key, val bigint not null) 
             partitioned by (dd string, hh string) 
             tblproperties ("transactional"="true");
--插入數(shù)據(jù)            
insert into table mf_dt partition(dd='01', hh='01') values (1, 1), (2, 2);
insert into table mf_dt partition(dd='01', hh='01') values (2, 20), (3, 3);
insert into table mf_dt partition(dd='01', hh='01') values (3, 30), (4, 4);

--執(zhí)行compaction,以及操作完成后,可繼續(xù)查詢歷史數(shù)據(jù)。
set odps.merge.task.mode=service;
alter table mf_dt partition(dd='01', hh='01') compact major;
select * from mf_dt timestamp as of get_latest_timestamp('mf_dt') where dd='01' and hh='01';
select * from mf_dt timestamp as of get_latest_timestamp('mf_dt', 2) where dd='01' and hh='01';