Hive之分區表


Hive分區表

1. 說明

  • 分區表的一個分區對應hdfs上的一個目錄
  • 分區表包括靜態分區表和動態分區表,根據分區會不會自動創建來區分
  • 多級分區表,即創建的時候指定 PARTITIONED BY (event_month string,loc string),根據順序,級聯創建 event_month=XXX/loc=XXX目錄,其他和一級的分區表是一樣

2. 靜態分區

生成數據

[root@master Hive]# cat date.sh
for i in $(seq 20)
do
  echo -e  "$(date -d "$RANDOM minute ago"  +%F' '%T'.'%N)"
done|sort -nk1|awk '{print NR"\t"$0}'>test.txt
[root@master Hive]# sh date.sh
[root@master Hive]# cat test.txt
1    2018-06-13 07:47:50.981100534
2    2018-06-14 16:17:50.984444067
3    2018-06-15 00:16:50.977659799
4    2018-06-16 09:57:50.980036092
5    2018-06-16 16:28:50.983383590
6    2018-06-16 18:11:50.995934741
7    2018-06-16 20:42:50.976483956
8    2018-06-19 17:42:50.994897479
9    2018-06-20 13:21:50.993988405
10    2018-06-20 21:20:50.988528977
11    2018-06-21 09:24:50.990346343
12    2018-06-22 00:09:50.985461831
13    2018-06-26 12:18:50.982232601
14    2018-06-26 22:21:50.987616378
15    2018-06-29 23:12:50.993019664
16    2018-06-30 05:09:50.989413716
17    2018-07-01 03:18:50.992127089
18    2018-07-02 21:51:50.991226963
19    2018-07-03 08:29:50.986623743
20    2018-07-05 15:45:50.978901099

創建靜態分區表結構

create table static_part (
ord_num string,
ord_date string
)
PARTITIONED BY (ord_date_month string)
row format delimited fields terminated by '\t';

往分區里面導入數據

load data local inpath '/root/Hive/test.txt' overwrite into table static_part partition (ord_date_month='2018-06');  //靜態分區導入數據需要指定partition的key
select * from static_part where ord_date_month='2018-06';

3. 動態分區

創建動態分區表結構

create table dynamic_part (
ord_num string
)
PARTITIONED BY (ord_date string)      //把訂單日期自動做分區
row format delimited fields terminated by '\t';

開啟動態分區

set hive.exec.dynamic.partition=true; //使用動態分區
set hive.exec.dynamic.partition.mode=nonstrict; //無限制模式

把剛才靜態分區的數據導入到靜態分區,用ord_date自動分區

insert into table dynamic_part partition(ord_date) select ord_num,ord_date from static_part;

 

更多用法:https://www.cnblogs.com/ilvutm/p/7152499.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM