一、Hive的内部表和外部表的区别
内部表(managed table): 未被external修饰的表,也叫管理表。
外部表(external table):被external修饰的表。
内部表&外部表的区别:
内部表:删除表会删除表的元数据(metadata)和表数据(data)。
外部表:删除表会删除表的元数据(metadata),但不会删除表数据(data)。
数据管理方式: 数据(data)都存储在HDFS上,内部表由Hive自身管理,外部表数据由HDFS管理; 元数据(metadata)都存储在mysql上,由mysql管理。
二、Hive内部表的操作
1、创建内部表
create table student1(id int, name string)
row format delimited fields terminated by 'lt'stored as textfile;
2、查看表格式化数据
desc formatted student1;
3、上传表数据并查询表数据存储在hdfs的文件
dfs -put /opt/module/data/student.txt /user/hive/warehouse/temp.db/studentl;
4、查询表存储数据
select * from student1;
5、查询表的原数据(MySQL运行)
select * from tbls;
6、删除表
drop table student1;
三、Hive外部表的操作
1、创建外部表
create external table student2(id int,name string)
row format delimited fields terminated by '\t'stored as textfile
location "/tmp/student " ;
2、查看表格式化数据
desc formatted student2;
3、上传表数据并查询表数据存储在hdfs的文件
dfs -put /opt/module/data/student.txt /tmp/student;
4、查询表数据
select * from student2;