当前位置:   article > 正文

内部表外部表的操作与区别_postgresql 创建内部表和外部表的区别

postgresql 创建内部表和外部表的区别

内部表外部表

未被external修饰的表是内部表(managed table),被external修饰的是外部表(external table)

内部表操作

准备工作:

创建stu.txt

1,zs
2,ls
3,ww
4,wmz
  • 1
  • 2
  • 3
  • 4

上传stu.txt到hdfs中 , 我的上传目录是 /user/mwf

hadoop fs -mkdir /user/mwf/ 
hadoop fs -put stu.txt /user/mwf
  • 1
  • 2
创建内部表
> create table stu(id int,name string) row format delimited fields terminated by ","
> load data inpath "/user/mwf/stu.txt" into table stu ;
> select * from stu ;
结果:
1	zs
2	ls
3	ww
4	wmz
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
说明:
  1. 创建表的时候可以通过指定location来指定表文件的存放路径,如果不指定的话,默认是将数据存放在/user/hive/warehouse/库名/ 下的
  2. load data 是数据的迁移,执行load data后,数据会从hdfs中的原来的位置移动到指定的位置或者是默认的存放位置(数据会发生移动的,如上例中数据从/user/mwf移动到了/user/hive/warehouse/目录下)
  3. 内部表删除的时候,会在元数据库中删除元数据,并且hdfs中的文件也会被删除

外部表操作

接着做准备工作,创建stu.txt,上传到hdfs中

创建外部表
> create external table stu_external (id int,name string) row format delimited fields terminated by "," location '/external/stu';
> load data inpath "/user/mwf/stu.txt" into table stu_external ;
> select * from stu_external;

> drop table stu_external ;
> create external table stu_external (id int,name string) row format delimited fields terminated by "," location '/external/stu';
> select * from stu_external;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
说明:
  1. 外部表和内部表最不同的一点在于location,外部表的location指定表文件所在的位置,如果在指定的位置下有符合表结构的数据,直接查询就可以查询出数据来;如果loaction下不存在数据,可以通过load data将数据移动到location所指定的目录,然后也可以查询出数据来

    如上例,通过load data将/user/mwf/下的stu.txt移动到了/external/stu下,就可以通过select查询出数据来;我们也可以在创建表的时候,直接将location指定为/external/stu,就可以通过select查询数据出来

  2. 外部表删除表的时候,会从元数据库中删除,但是不会从hdfs中删除

    如上例,删除表后,会发现数据还安静的躺在/external/stu目录下;再次执行建表语句,并指定location为/external/stu,执行查询,会发现表和数据都回来了

总结

  1. 内部表的数据是由Hive自身管理的,外部表的数据是由HDFS管理的;删除内部表会删除元数据和存储的数据;删除外部表只删除元数据不删除存储的数据

    内部表的数据在hive中删除,在HDFS中也就删除了;但是外部表的数据,在Hive中删除,HDFS中还是存在的

  2. 两者都可以在建表的时候指定location,指定数据文件的存放位置;如果不指定的话,默认都是在/user/hive/warehouse/目录下(这个目录是可以在配置文件中修改的)。

  3. 两者的load 操作都会移动数据!!!


个人理解,有不对的地方欢迎指正~~


个人微信公众号【码农峰】,每天推送最新行业资讯,每周推送原创技术文章,欢迎关注。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/78921
推荐阅读
相关标签
  

闽ICP备14008679号