Hive3详细教程(五)内部表、外部表与导入数据

先准备一个stus.txt数据:

Tom,male,20
Jim,male,21
jone,female,20

内部表

内部表又称管理表

1.在hive中新建一个张内部表:

create table stu_m(
   name    string,
   gender   string,
   age      int
)
row format delimited
fields terminated by ','
;

因为在beeline的命令行中书写sql,并不友好,可以将create语句书写到一个stu_m.sql的文件中,上传到linux虚拟机的/apps目录下,
然后使用source命令执行sql语句实现建表:

source /apps/stu_m.sql;

如图所示:
Hive3详细教程(五)内部表、外部表与导入数据

可以通过desc formatted命令查看表结构详细信息和所存储的hdfs文件位置信息。

desc formatted stu_m;

2.上传数据

load data local inpath '/apps/stus.txt' overwrite into table stu_m;

3.验证:

select * from stu_m;

Hive3详细教程(五)内部表、外部表与导入数据

Hdfs上位置:
Hive3详细教程(五)内部表、外部表与导入数据

外部表:

外部表在创建的时候与内部表相比有了一个external 关键字,并且要指定存储在hdfs的位置,其余的load、select与内部标一致。
1.创建外部表

create  external  table  stu_e(
   name    string,
   gender   string,
   age      int
)
row format delimited
fields terminated by ','
location '/my_hive/stu_e'
;

其中location '/my_hive/stu_e’指定的是一个hdfs的路径。
2.load上数据
Hdfs上位置:
Hive3详细教程(五)内部表、外部表与导入数据

使用drop删除内部表和外部表,会发现内部表删除后,所对应的hdfs数据也消失,而外部表删除后,仅仅是删除了元数据,hdfs数据并没有消失。

上一篇:听说你想把对象存储当 HDFS 用,我们这里有个方案...


下一篇:Hadoop学习笔记之HDFS