將表內的資料按照一定的業務進行劃分,可以減少資料的冗餘,同時可以提高分割槽資料查詢的效率。
1.建立分割槽表,分割槽欄位為日期date
create
table my_partition_table(id int
, name string) partitioned by
(partition_date string)
row format delimited fields
terminated
by","
;
2.檢視表詳情
方式一: show
方式二: desc formatted my_partition_table;
3. 分割槽插入資料
load
data
local inpath "/home/temp/student.txt"
into
table my_partition_table partition
(partition_date=
'2020-05-19'
);
4.hdfs中檢視資料
5.檢視表的分割槽
4. 根據分割槽查資料
1.hive的靜態分割槽,實際上就是手動指定分割槽的值為靜態值,這種對於小批量的分割槽插入比較友好。也就是手動指定了分割槽的值。
load
data
local inpath "/home/temp/student.txt"
into
table my_partition_table partition
(partition_date=
'2020-05-19'
);
2.hive的動態分割槽,其實就是把靜態分割槽中的分割槽值設定為動態的值,就可以了,也就是動態指定分割槽欄位的值,對於大批量的分割槽插入是乙個很方便的用法
insert overwrite table demo_dynamic_partition
partition
(year
=year
,month
=month
,day
=day
,hour
=hour
)select user_id, user_name,
trade_year as
year
,trade_month as
month
,trade_day as
day,
trade_hour as
hour
from user_demo
當然動態分割槽需要進行一些設定
- hive預設配置值
-- 開啟或關閉動態分割槽
hive.
exec
.dynamic.
partition
=false
;-- 設定為nonstrict模式,讓所有分割槽都動態配置,否則至少需要指定乙個分割槽值
hive.
exec
.dynamic.
partition
.mode
=strict;
hive.
exec
.max.dynamic.partitions.pernode=
100;
-- 一條帶有動態分割槽sql語句所能建立的最大動態分割槽總數,超過則報錯
hive.
exec
.max.dynamic.partitions=
1000
;-- 全域性能被建立檔案數目的最大值,通過hadoop計數器跟蹤,若超過則報錯
hive.
exec
.max.created.files=
100000
;
3.動態分割槽和靜態分割槽聯合使用
partition
(year
="2020"
,month
="05"
,day
=day
,hour
=hour
)select user_id, user_name,
trade_year as
year
,trade_month as
month
,trade_day as
day,
trade_hour as
hour
from user_demo
where trade_year=
"2020"
and trade_month=
"04"``
`
1.修改分割槽的語句
a.把乙個分割槽打包成乙個har包
alter
table employees archive partition
(country=
"china"
,state=
"asia"
)b.把乙個分割槽har包還原成原來的分割槽
alter
table employees unarchive partition
(country=
"china"
,state=
"asia"
)c.保護分割槽防止被刪除
alter
table employees partition
(country=
"china"
,state=
"asia"
)enable no_drop
d.保護分割槽防止被查詢
alter
table employees partition
(country=
"china"
,state=
"asia"
)enable offline
e.允許分割槽刪除和查詢
alter
table employees partition
(country=
"china"
,state=
"asia"
)disable no_drop
alter
table employees partition
(country=
"china"
,state=
"asia"
)disable offline
2.快速建立表
建立表,攜帶資料
create
table employees1 as
select
*from employees1
建立表,攜帶表結構
create
table employees2 like employees
hive手冊之分割槽使用
介紹hive如何新增分割槽 刪除分割槽 自定義分割槽以及分割槽插入資料 如何自定義分割槽 create table test name string,int partitions birth string,age string create table yxtest name string,int ...
Hive的資料模型之分割槽表
一 分割槽表 partition 1 partiition對應於資料庫的partition列的密集索引。2 在hive中,表中的乙個partition對應於表下的乙個目錄,所有的partition的資料都儲存在對應的目錄中。二 理解分割槽表 三 實戰 1 建立分割槽表 create table pa...
Linux之分割槽
安裝linux系統之後,將會對磁碟進行劃分 一般是這樣的,分為三個 1.boot 下面掛載乙個,100mb 2.swap交換區掛載乙個,是物理記憶體的2倍,也就是8g x 2 16g,但是它不能超過256mb,這個規定是以前制定的,因為之前電腦記憶體很小。現在一般統一指定它為最大,256mb。3.根...