【赵渝强老师】Hive的内部表与外部表

打印 上一主题 下一主题

主题 914|帖子 914|积分 2742


Hive是基于HDFS之上的数据仓库,它把所有的数据存储在HDFS中,Hive并没有专门的数据存储格式。当在Hive中创建了表,可以利用load语句将本地或者HDFS上的数据加载到表中,从而利用SQL语句进行分析和处理。
Hive的数据模型主要是指Hive的表结构,可以分为:内部表、外部表、分区表、临时表和桶表,同时Hive也支持视图。视频讲解如下:
Hive的数据模型                 【赵渝强老师】Hive的数据模型
      一、利用Hive的内部表

内部表与关系型数据库中的表是一样的。利用create table语句可以创建内部表,并且每张表在HDFS上都会对应一个目次。这个目次将默认创建在HDFS的/user/hive/warehouse下。除外部表外,表中如果存在数据,数据所对应的数据文件也将存储在这个目次下。删除内部表的时候,表的元信息和数据都将被删除。视频讲解如下:
Hive的内部表                 【赵渝强老师】Hive的内部表
      下面利用之前的员工数据(emp.csv)来创建内部表。
(1)执行create table语句创建表结构。
  1. hive> create table emp
  2. (empno int,
  3. ename string,
  4. job string,
  5. mgr int,
  6. hiredate string,
  7. sal int,
  8. comm int,
  9. deptno int)
  10. row format delimited fields terminated by ',';
复制代码
  由于csv文件是采样逗号进行分隔的,因此在创建表的时候需要指定分隔符是逗号。Hive表的默认分隔符是一个不可见字符。
  (2)利用load语句加载本地的数据文件。
  1. hive> load data local inpath '/root/temp/emp.csv' into table emp;
复制代码
(3)利用下面的语句加载HDFS的数据文件。
  1. hive> load data inpath '/scott/emp.csv' into table emp;
复制代码
(4)执行SQL的查询。
  1. hive> select * from emp order by sal;
复制代码
(5)整个执行的过程如下图所示。

(6)查看HDFS的/user/hive/warehouse/目次可以看到创建的emp表和加载的emp.csv文件,如下图所示。

二、利用外部表

与内部表不同的是,外部表可以将数据存在HDFS的任意目次下。可以把外部表明白成是一个快捷方式,它的本质是创建一个指向HDFS上已有数据的链接,在创建表的同时会加重数据。而当删除外部表的时候,只会删除这个链接和对应的元信息,现实的数据不会从HDFS上删除。视频讲解如下:
Hive的外部表                 【赵渝强老师】Hive的外部表
      下面通过具体的步调演示如何创建Hive的外部表。
  1. [root@bigdata111 ~]# more students01.txt
  2. 1,Tom,23
  3. 2,Mary,22
  4. [root@bigdata111 ~]# more students02.txt
  5. 3,Mike,24
复制代码
(2)将数据文件上传到HDFS的任意目次。
  1. hdfs dfs -mkdir /students
  2. hdfs dfs -put students0*.txt /students
复制代码
(3)在Hive中创建外部表。
  1. hive> create external table ext_students
  2. (sid int,sname string,age int)
  3. row format delimited fields terminated by ','
  4. location '/students';
复制代码
(4)执行SQL的查询。
  1. hive> select * from ext_students;
复制代码
(5)执行的效果如下图所示。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81429

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表