zoukankan      html  css  js  c++  java
  • Hive中LOCATION参数和EXTERNAL参数的关系

    大家可以参考厦门大学数据库实验室这篇博客

    虽然说,建立外部表会使用LOCATION指定位置,而建立内部表不使用LOCATION,会默认保存在/hive/warehouse/下,自动生成一个目录,目录名为表名。

    但是通过一系列对比,我们可以发现,这两个参数之间是没有关系的。
    我们可以建立外部表,不使用LOCATION;也可以建立内部表,使用LOCATION。

    • 建外部表使用LOCATION,读取到数据,同时插入数据,会在LOCATION位置新生成文件000000_0,删除外部表,数据文件还在,证明外部表功能还在。
    • 建内部表使用LOCATION,读取到数据,同时插入数据也会生成新文件,但删除内部表,数据文件都会消失,整个目录都会删除掉,也正好符合内部表的功能。
    • 建立外部表,不使用LOCATION,会在默认在/hive/warehouse/数据库名称/表名,建立目录。然后插入数据,会生成新文件,删除表。目录和文件都还在。符合外部表功能。
    • 建立内部表,不使用LOCATION。在相应位置创建新目录,插入数据,一样生成新文件。但是如果删除内部表,目录和数据文件都会删除掉。

    结论

    所以我们是否会在HDFS上看到生成新的目录,取决于是否使用LOCATION,而不是外部表、内部表的关系。

  • 相关阅读:
    哈希算法原理和一致性哈希算法
    负载均衡之轮循算法
    Mybatis的使用
    Spring与SpringMVC的整合
    编程式事务与声明式事务
    八大排序方法及对Arrays类的排序实现探讨
    单例模式的线程安全性
    HotSpot对象的创建及内存布局
    逃逸分析、栈上分配、标量替换、同步替换
    java编译器和解释器
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/13100497.html
Copyright © 2011-2022 走看看