您好,登錄后才能下訂單哦!
按照不同部門作為分區,導數據到目標表
1.創建靜態分區表:
create table emp_static_partition(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double)
PARTITIONED BY(deptno int)
row format delimited fields terminated by '\t';
2.插入數據:
hive>insert into table emp_static_partition partition(deptno=10)
select empno , ename , job , mgr , hiredate , sal , comm from emp where deptno=10;
3.查詢數據:
hive>select * from emp_static_partition;
1.創建動態分區表:
create table emp_dynamic_partition(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double)
PARTITIONED BY(deptno int)row format delimited fields terminated by '\t';
【注意】動態分區表與靜態分區表的創建,在語法上是沒有任何區別的
2.插入數據:
hive>insert into table emp_dynamic_partition partition(deptno)
select empno , ename , job , mgr , hiredate , sal , comm, deptno from emp;
【注意】分區的字段名稱,寫在最后,有幾個就寫幾個 與靜態分區相比,不需要where
需要設置屬性的值:
hive>set hive.exec.dynamic.partition.mode=nonstrict;
假如不設置,報錯如下:
3.查詢數據:
hive>select * from emp_dynamic_partition;
分區列為deptno,實現了動態分區
在生產上我們更傾向是選擇動態分區,
無需手工指定數據導入的具體分區,
而是由select的字段(字段寫在最后,有幾個寫幾個)自行決定導出到哪一個分區中, 并自動創建相應的分區,使用上更加方便快捷 ,在生產工作中用的非常多多。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。