• hive内部表与外部表区别


    1.在Hive里面创建一个表:

    hive> create table wyp(id int,
        > name string,
        > age int,
        > tele string)
        > ROW FORMAT DELIMITED
        > FIELDS TERMINATED BY ' '
        > STORED AS TEXTFILE;
    OK
    Time taken: 0.759 seconds

    2.这样我们就在Hive里面创建了一张普通的表,现在给这个表导入数据:

    load data local inpath '/home/wyp/data/wyp.txt' into table wyp;

    3.创建外部表多了external关键字说明以及location ‘/home/wyp/external’

    hive> create external table exter_table(
        > id int,
        > name string,
        > age int,
        > tel string)
        > location '/home/wyp/external';
    OK
    Time taken: 0.098 seconds

    创建外部表,需要在创建表的时候加上external关键字,同时指定外部表存放数据的路径(当然,你也可以不指定外部表的存放路径,这样Hive将 在HDFS上的/user/hive/warehouse/文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放在这里)

    外部表导入数据和内部表一样:load data local inpath '/home/wyp/data/wyp.txt' into table exter_table;

    4.和上面的导入数据到表一样,将本地的数据导入到外部表,数据也是从本地文件系统复制到HDFS中/home/hdfs/wyp.txt文件中,但是,最后 数据不是移动到外部表的/user/hive/warehouse/exter_table文件夹中(除非你创建表的时候没有指定数据的存放路径)!大家 可以去HDFS上看看!对于外部表,数据是被移动到创建表时指定的目录(本例是存放在/home/wyp/external文件夹中)!

    5.内部表删除

    hive> drop table wyp;
    Moved: 'hdfs://mycluster/user/hive/warehouse/wyp' to
            trash at: hdfs://mycluster/user/hdfs/.Trash/Current
    OK
    Time taken: 2.503 seconds

    如果你要删除外部表:drop table exter_table;

    hive> drop table exter_table;
    OK
    Time taken: 0.093 seconds

    和上面删除Hive的表对比可以发现,没有输出将数据从一个地方移到任一个地方!那是不是删除外部表的的时候数据直接被删除掉呢?答案不是这样的,你会发现删除外部表的时候,数据并没有被删除,而只是删除了元数据,这是和删除表的数据完全不一样的

    总结:

    1、在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的,而表则不一样;
    2、在删除表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!
    那么,应该如何选择使用哪种表呢?在大多数情况没有太多的区别,因此选择只是个人喜好的问题。但是作为一个经验,如果所有处理都需要由Hive完成,那么你应该创建表,否则使用外部表!

  • 相关阅读:
    定时器
    表单事件
    闭包,string类,Array类
    构造函数,原型链补充
    Elasticsearch安装(6.4.3版)
    快速配置ssh免密登录
    idea远程debug SpringBoot项目
    java获取一个对象的内存大小
    nginx代理其他网站
    外呼系统实现平均分配策略的实现方式之一
  • 原文地址:https://www.cnblogs.com/Mandylover/p/5212369.html
Copyright © 2020-2023  润新知