在將新資料插入表中時,每個分割槽的資料儲存為單獨的資料片段(每個資料片段的資料是按逐漸排序的),在插入後的10~15分鐘內,同乙個分割槽的資料片段將合併為乙個整體的資料片段。
根據分割槽表示式的資料型別,分割槽的命名規則是存在差異的。
系統表:
select
partition
,name,
table
,active from system.parts where
table
like
'***'
;
#1. 不指定分割槽
drop
table test_partition_non;
create
table test_partition_non(name string,
timestamp
datetime
)engine
=mergetree(
)order
by name;
insert
into test_partition_non values
('nanjing'
,'2020-04-21 12:23:33');
#2. 數值
drop
table test_partition_numeric;
create
table test_partition_numeric(id uint64,
timestamp
datetime
)engine
=mergetree(
)order
by id partition
by id;
insert
into test_partition_numeric values
(556
,'2020-04-21 12:23:33');
#3. 日期
drop
table test_partition_date;
create
table test_partition_date(
date
date
,timestamp
datetime
)engine
=mergetree(
)order
bydate
partition
bydate
;insert
into test_partition_date values
('2020-04-21'
,'2020-04-21 12:23:33');
#4. 字串
drop
table test_partition_string;
create
table test_partition_string(name string,
timestamp
datetime
)engine
=mergetree(
)order
by name partition
by name;
insert
into test_partition_string values
('hangzhou'
,'2020-04-21 12:23:33');
#檢視表:
select
partition
, name,
table
, active from system.parts where
table
like
'test_partition_%'
;
在將新資料插入表中時,每個分割槽的資料按照目錄儲存為單獨的資料片段,目錄名為資料片段抿成,這個和system.parts表的name欄位一致。
在插入後的10~15分鐘內,同乙個分割槽的資料片段將合併為乙個整體的資料片段。
資料片段名稱包含了4部分的資訊,下面以資料片段20200421_1_2_1為例進行拆解:
非啟用的片段(active=0片段)將在合併後約10分鐘被刪除。
detached目錄包含使用detached語句從表分離的資料片段。損壞的資料片段也將移至該目錄,而不是被刪除。clickhouse不會使用detached目錄中的資料片段。此目錄中的資料可以隨時新增、刪除、或修改,clickhouse只有在執行attach語句時才會感知該目錄
alter語句、optimize語句通常需要指定分割槽的表示式,分割槽表示式的值為system.parts的partition欄位,而不是分割槽的名稱,這裡需要注意。
因為字串和日期型別的分割槽,分割槽名稱和分割槽表示式的值是不一樣的。
分割槽表示式的值是2020-04-21,分割槽名稱為20200421
執行optimize操作optimize table test_ partition partition '2020-04 -21';
不能執行optimize table test_ partition partition '202004 21';
hadoop自定義分割槽
實現自定義分割槽比較簡單了,繼承partitioner,實現getpartition 方法就行了,分割槽是按照key進行的。以wordcount為例。輸入文字1 hello world hello 3.輸入文字2 hello world world 4 編寫程式,hello 和world各自為乙個分...
mapreduce自定義分組 自定義分割槽 二次排序
mapreduce中二次排序的思想中,我們常常需要對資料的分割槽分組進行自定義,以下就介紹一下自定義分割槽分組的簡單實現 1 自定義分割槽 public class demopartitionerextends partitioner return 4 要注意的是 設定了分割槽之後,reduce任務...
Hadoop自定義排序 分割槽
自定義分割槽 主函式分割槽與分組 該物件需要實現writablecomparable介面。public class myclass implements writablecomparable public void setyear int year public int gettemperature...