hive内部表和外部表

 

内部表创建方法:

create table student(
 id int,
 name string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';

使用 desc formatted student; 查看表的描述信息,Table Type = MANAGED_TABLE ,说明该表为内部表

在准备hdfs的/opt/test 路径下student.txt 文件,内容如下

stendent.txt 文件内容

1,zhangsan
2,lisi
3,wangwu

接下来可以使用 loaddata 将本地文件或者hdfs中的文件导入到student表, 

load data inpath '/opt/test/student.txt' into table student;

查询结果如下:

 

创建外部表:

首先在hdfs路径/opt/studnet路径下准备俩个文件student_1.txtstudent_2.txt,如下:

#student_1.txt文件内容
1,zhangsan
2,lisi
3,wangwu


#student_2.txt文件内容
4,lucy
5,lili

创建外部表student_1

create external table student_1(
  id int,
  name string
)
ROW FORMAT DELIMITED
 FIELDS TERMINATED BY ','
location '/opt/student';

desc formatted student_1(table type 为external_table)

select * from student_1 结果如下(/opt/student路径下的student_1.txt 和 student_2.txt 的文件数据被导入到student_1表中)

内部表和外部表的不同点:

1.内部表drop table会删除hdfs中的文件。外部表drop table 不会删除hdfs中的文件。

2.内部表load data 会移动将hdfs中的文件移动到hive默认的hdfs路径即:/user/hive/warehouse

  外部表不会移动hdfs中的文件。

使用场景:

在hdfs中先有文件而后创建表,使用外部表。

先创建表而后在HDFS中有文件,使用内部表。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值