Hive靜態分區和動態分區
阿新 • • 發佈:2018-09-27
出了 nat .net load data ide 沒有 -- 靜態 tab
一、靜態分區
1、創建分區表
1 hive (default)> create table order_mulit_partition( 2 > order_number string, 3 > event_time string 4 > ) 5 > PARTITIONED BY(event_month string, step string) 6 > row format delimited fields terminated by ‘\t‘;
2、加載數據到分區表
1 load data local inpath ‘/opt/data/order_created.txt‘ overwrite into table order_mulit_partition PARTITION(event_month=‘201405‘, step=‘1‘);
order_created.txt內容如下
1 order_number event_time 2 10703007267488 2014-05-01 06:01:12.334+01 3 10101043505096 2014-05-01 07:28:12.342+01 4 101030435097472014-05-01 07:50:12.33+01 5 10103043501575 2014-05-01 09:27:12.33+01 6 10104043514061 2014-05-01 09:03:12.324+01
3、這種手動指定分區加載數據,就是常說的靜態分區的使用。但是在日常工作中用的比較多的是動態分區。
二、動態分區
需求:按照不同部門作為分區導數據到目標表
以上需求如果用靜態分區的話,數據量大你是不是很懵逼??所以這個需求一般采用動態分區來實現。
1、創建目標表
1 hive (default)> create table emp_dynamic_partition( 2 > empno int, 3 > ename string, 4 > job string, 5 > mgr int, 6 > hiredate string, 7 > sal double, 8 > comm double) 9 > PARTITIONED BY(deptno int) 10 > row format delimited fields terminated by ‘\t‘;
2、采用動態方式加載數據到目標表
加載之前先設置一下下面的參數
1 hive (default)> set hive.exec.dynamic.partition.mode=nonstrict
開始加載
1 insert into table emp_dynamic_partition partition(deptno) 2 select empno , ename , job , mgr , hiredate , sal , comm, deptno from emp;
上面加載數據方式並沒有指定具體的分區,只是指出了分區字段。在select最後一個字段必須跟你的分區字段,這樣就會自行根據deptno的value來分區。
3、驗證一下
有值
1 hive (default)> select * from emp_dynamic_partition; 2 OK 3 emp_dynamic_partition.empno emp_dynamic_partition.ename emp_dynamic_partition.job emp_dynamic_partition.mgr emp_dynamic_partition.hiredate emp_dynamic_partition.sal emp_dynamic_partition.comm emp_dynamic_partition.deptno 4 7782 CLARK MANAGER 7839 1981-6-9 2450.0 NULL 10 5 7839 KING PRESIDENT NULL 1981-11-17 5000.0 NULL 10 6 7934 MILLER CLERK 7782 1982-1-23 1300.0 NULL 10 7 7369 SMITH CLERK 7902 1980-12-17 800.0 NULL 20 8 7566 JONES MANAGER 7839 1981-4-2 2975.0 NULL 20 9 7788 SCOTT ANALYST 7566 1987-4-19 3000.0 NULL 20 10 7876 ADAMS CLERK 7788 1987-5-23 1100.0 NULL 20 11 7902 FORD ANALYST 7566 1981-12-3 3000.0 NULL 20 12 7499 ALLEN SALESMAN 7698 1981-2-20 1600.0 300.0 30 13 7521 WARD SALESMAN 7698 1981-2-22 1250.0 500.0 30 14 7654 MARTIN SALESMAN 7698 1981-9-28 1250.0 1400.0 30 15 7698 BLAKE MANAGER 7839 1981-5-1 2850.0 NULL 30 16 7844 TURNER SALESMAN 7698 1981-9-8 1500.0 0.0 30 17 7900 JAMES CLERK 7698 1981-12-3 950.0 NULL 30 18 8888 HIVE PROGRAM 7839 1988-1-23 10300.0 NULL NULL
有分區(自動分區)
1 hive (default)> show partitions emp_dynamic_partition; 2 OK 3 partition 4 deptno=10 5 deptno=20 6 deptno=30 7 deptno=__HIVE_DEFAULT_PARTITION__ 8 Time taken: 0.29 seconds, Fetched: 4 row(s)
4、emp表的具體你內容如下
1 hive (default)> select * from emp; 2 OK 3 emp.empno emp.ename emp.job emp.mgr emp.hiredate emp.sal emp.comm emp.deptno 4 7369 SMITH CLERK 7902 1980-12-17 800.0 NULL 20 5 7499 ALLEN SALESMAN 7698 1981-2-20 1600.0 300.0 30 6 7521 WARD SALESMAN 7698 1981-2-22 1250.0 500.0 30 7 7566 JONES MANAGER 7839 1981-4-2 2975.0 NULL 20 8 7654 MARTIN SALESMAN 7698 1981-9-28 1250.0 1400.0 30 9 7698 BLAKE MANAGER 7839 1981-5-1 2850.0 NULL 30 10 7782 CLARK MANAGER 7839 1981-6-9 2450.0 NULL 10 11 7788 SCOTT ANALYST 7566 1987-4-19 3000.0 NULL 20 12 7839 KING PRESIDENT NULL 1981-11-17 5000.0 NULL 10 13 7844 TURNER SALESMAN 7698 1981-9-8 1500.0 0.0 30 14 7876 ADAMS CLERK 7788 1987-5-23 1100.0 NULL 20 15 7900 JAMES CLERK 7698 1981-12-3 950.0 NULL 30 16 7902 FORD ANALYST 7566 1981-12-3 3000.0 NULL 20 17 7934 MILLER CLERK 7782 1982-1-23 1300.0 NULL 10 18 8888 HIVE PROGRAM 7839 1988-1-23 10300.0 NULL NULL
--------------------- 本文來自 A_ChunUnique 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/Gavin_chun/article/details/78174492
Hive靜態分區和動態分區