hadoop笔记之Hive的数据存储(外部表)

Hive的数据存储(外部表)

Hive的数据存储(外部表)

外部表

  • 指向已经在HDFS中存在的数据,可以创建Partition
  • 它和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异
  • 外部表只有一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。而删除一个外部表时,仅删除该链接

    hadoop笔记之Hive的数据存储(外部表)

○如何创建一个外部表?

hdfs源文件查看

[root@hadooppseudo ~]# ls student0*
student01.txt student02.txt student03.txt
[root@hadooppseudo ~]# more student01.txt
Tom,23
Mary,20
[root@hadooppseudo ~]# more student02.txt
Mike,25
[root@hadooppseudo ~]# more student03.txt
Scott,21
King,20
[root@hadooppseudo ~]# hdfs dfs -put student01.txt /input
[root@hadooppseudo ~]# hdfs dfs -put student02.txt /input
[root@hadooppseudo ~]# hdfs dfs -put student03.txt /input

把student0*.txt各文件放入hdfs的过程中, 需要确认input目录已存在,否则hdfs会认为把student01.txt放入名为input的文件中,再放入student02.txt时会提示 File exist

创建一张外部表来指向这三个文件

create external table external_student
(sid int,sname string,age int)
row format delimited fields terminated by ','
location '/input';

查询一下表中的数据

select * from external_student;
Tom 23
Mary 20
Mike 25
Scott 21
King 20

将外部其中一个文件从hdfs中删除掉

[root@hadooppseudo ~]# hdfs dfs -rm /input/student03.txt

此时hive中

select * from external_student;
Tom 23
Mary 20
Mike 25

相应数据也被删除掉了

如果我们再执行

[root@hadooppseudo ~]# hdfs dfs -put student03.txt /input

那么再次执行查询,hive中消失的两行数据又回来了

select * from external_student;
Tom 23
Mary 20
Mike 25
Scott 21
King 20

这就是外部表

上一篇:Oracle11g R2创建PASSWORD_VERIFY_FUNCTION对应密码复杂度验证函数步骤


下一篇:BrnShop开源网上商城第二讲:ASP.NET MVC框架