内部表数据由hive自己管理,外部表数据由hdfs管理。内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),而外部表存储位置由自己指定location。

区别:

1.创建外部表需要添加external关键字。

2.删除外部表时,hdfs中的数据文件不会删除,只删除元数据。而删除内部表,表元数据和hdfs中的数据都会删除。

启动hive命令行

/bin/hive

准备测试数据

 
 student.txt
 1,he,21,131588888888
 2,test,13,13522222222
 3,jie,25,183538384983 

内部表

创建内部表:
create table student (id int,name string,age int,tel string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’ STORED AS TEXTFILE;

注:单行数据格式使用逗号(,)分割。

创建表时我没有指定location,默认存储在/user/hive/warehouse/testdb.db/student目录。

导入数据:
load data local inpath ‘/Users/hecj/Desktop/hive/student.txt’ into table student;

查询:

select * from student;

select * from student where id=1;

删除内部表:

drop table student;

注:内部表删除后,hdfs中的数据会一并删除。

外部表

创建外部表:

create external table external_student(id int,name string,age int,tel string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’ STORED AS TEXTFILE location ‘/external/student’;

创建外部表多了个关键字external。

这里我指定了location,数据存储在hdfs的/external/student目录

导入数据:

load data local inpath ‘/Users/hecj/Desktop/hive/student.txt’ into table external_student;

查询:

select * from external_student;

删除外部表:

drop table external_student;

注:删除外部表,hdfs中的数据不会删除,删除的只是mysql中的元数据信息。

发表评论

电子邮件地址不会被公开。 必填项已用*标注