内部表和外部表的创建
1 | CREATE [TEMPORARY] [EXTERNAL] TABLE table_name |
内部表和外部表的区别
删除
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35- DROP一下外部表,然后再创建
DROP TABLE emp_ex;
CREATE EXTERNAL TABLE emp_ex(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/myhive/external';
此时再进行查询会发现,我们DROP表之后,并没有清理源数据,在创建表的时候就又上了之前的源数据
- DROP内部表试一下
DROP TABLE emp;
CREATE TABLE emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
再查询内部表的时候就会发现,没有任何数据
hive (myhive)> select * from emp;
OK
emp.empno emp.ename emp.job emp.mgr emp.hiredate emp.sal emp.comm emp.deptno使用场景
1
2外部表在删除的时候不会清理源数据,所以相对较安全
同时由于其指定目录的特性,在`跨部门`的合作中会经常用到