Hive建表语法-内部表、外部表

内部表

写语句时未被external修饰的表是内部表

特点:

当删除该表时,表的元数据也会跟着被删除,会影响其他使用该数据的表

代码演示

  • 1. 创建一个数据

  • 2.  将本机上的文件上传到hdfs中去

  • 3.分别创建两个表         tb_t1      tb_t2
create table tb_t1(
    id int,
    name string,
    age int,
    gender string
)
row format delimited fields terminated by ","
location "hdfs://linux01:8020/data/log";
create table tb_t2(
                      id int,
                      name string,
                      age int,
                      gender string
)
    row format delimited fields terminated by ","
    location "hdfs://linux01:8020/data/log";

  • 4.  查看表内信息

  • 5.删除tb_t2后

  • 6.  查看tb_1的内容

从以上的操作可以看出两个表共同使用一个信息,如果删除一个表的元数据的话,HDFS上的存储数据也会跟着删除,导致另外的表的数据也会丢失。

不加external会默认为内部表(管理表)

对于一些公共的数据源使用外部表. 对于保存的一些业务维度表或者是统计好的报表使用管理表(内部表)

外部表

写语句时用external修饰的表成为外部表

外部表跟HDFS存储的数据是分离的,当删除表的元数据时,不会对元数据造成影响,

create external  table tb_log2(  --外部表 
id int ,
name string 
)

代码演示

  • 1.    将数据上传到HDFS上

  • 2.   创建两个表tb_t1     tb_t2
create external table tb_t1(
    id int,
    name string,
    age int,
    gender string
)
row format delimited fields terminated by ","
location "hdfs://linux01:8020/data/log";
create external table tb_t2(
                      id int,
                      name string,
                      age int,
                      gender string
)
    row format delimited fields terminated by ","
    location "hdfs://linux01:8020/data/log";

  • 3.   查看表内的信息

  • 4.  删除tb_t2

5.  查看tb_t1的元数据

发现即使删除了tb_t2表,但是公用存储数据的tb_t1表的元数据没有被删除

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值