hive 内部表、外部表、使用场景举例、内部表与外部表转换


1. 内部表

1.1 概念

  默认创建的表都是管理表(MANAGED_TABLE ),即内部表;
  Hive控制内部表数据的生命周期:默认情况下会将内部表的数据存储在由配置项hive.metastore.warehouse.dir所定义的目录的子目录下。 当删除一个内部表时,Hive同时会删除表中的数据;
  内部表不适合与其他工具共享数据。

1.2 实操

在这里插入图片描述
查询表的类型

desc formatted 表名;

在这里插入图片描述


2. 外部表

2.1 概念

  EXTERNAL关键字可以让用户创建一个外部表,在建表的同时可指定一个指向实际数据的路径(LOCATION)(内部表和外部表建表均可指定);
  在删除表的时候,Hive认为其并非完全拥有外部表的数据的所有权。删除外部表仅删除描述表的元数据信息,数据会被保留。

2.2 实操

  (1)准备一份emp.txt文件上传到hdfs

7369	SMITH	CLERK	7902	1980-12-17	800.00		20
7499	ALLEN	SALESMAN	7698	1981-2-20	1600.00	300.00	30
7521	WARD	SALESMAN	7698	1981-2-22	1250.00	500.00	30
7566	JONES	MANAGER	7839	1981-4-2	2975.00		20
7654	MARTIN	SALESMAN	7698	1981-9-28	1250.00	1400.00	30
7698	BLAKE	MANAGER	7839	1981-5-1	2850.00		30
7782	CLARK	MANAGER	7839	1981-6-9	2450.00		10
7788	SCOTT	ANALYST	7566	1987-4-19	3000.00		20
7839	KING	PRESIDENT		1981-11-17	5000.00		10
7844	TURNER	SALESMAN	7698	1981-9-8	1500.00	0.00	30
7876	ADAMS	CLERK	7788	1987-5-23	1100.00		20
7900	JAMES	CLERK	7698	1981-12-3	950.00		30
7902	FORD	ANALYST	7566	1981-12-3	3000.00		20
7934	MILLER	CLERK	7782	1982-1-23	1300.00		10
hdfs dfs -copyFromLocal ./emp.txt /wcinput/

在这里插入图片描述
  (2)在hive上创建外部表,并指定路径

create external table if not exists emp(
empno int,
ename string,
job string,
mgr int,
hiredate string, 
sal double, 
comm double,
deptno int)
row format delimited fields terminated by '\t'
location '/wcinput';

在这里插入图片描述
  (3)查看表类型

desc formatted emp;

在这里插入图片描述
  (4)删除外部表
元数据被删除:

在这里插入图片描述
数据仍然保留:
在这里插入图片描述


3. 使用场景举例

  每天日志文件定期流入HDFS文本文件。原始日志表使用外部表,统计分析过程中用到的中间表、结果表使用内部表存储


4. 内部表与外部表转换

4.1 修改外部表为内部表

alter table 表名 set tblproperties('EXTERNAL'='FALSE');

4.2 修改内部表为外部表

alter table 表名 set tblproperties('EXTERNAL'='TRUE');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

但行益事莫问前程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值