我理解hive中内部表和外部表之间的区别如下所示 1)如果我们删除内部表文件并且元数据将被删除,但是,在外部仅元数据的情况下 删除 2)如果文件数据需要由其他工具/应用程序共享,那么我们去外部表,如果没有 内部表,这样如果我们删除表(外部)数据仍然可用于其他工具/应用程序
我已经完成了问题的答案“Hive内部表和外部表之间的区别?” 但我仍然不清楚内部表的正确用例 所以我的问题是为什么我需要制作内部表?为什么我不能把所有东西都当成外表呢?
答案 0 :(得分:1)
在以下情况下使用EXTERNAL表: 数据也在Hive之外使用。 例如,数据文件由不锁定文件的现有程序读取和处理。 数据是永久性的,即在需要时使用。
在以下情况下使用INTERNAL表: 数据是暂时的。 您希望Hive完全管理表和数据的生命周期。
答案 1 :(得分:0)
让我们通过两种简单的情况来理解它:
假设您有一个数据集,并且必须对其执行一些分析/问题语句。由于问题陈述的性质,HiveQL可以完成其中的少数工作,其中很少需要Pig Latin的工作,很少需要Map Reduce等工作的完成。在这种情况下,External Table成为现实-同一数据集可用于解决整个分析问题,而不必为不同的工具使用同一数据集的不同副本。在这里,Hive不需要对数据集的权限,因为有几种工具可以使用它。
在某些情况下,仅HiveQL可以解决整个分析/问题陈述。在这种情况下,Internal Table成为现实-意味着您可以将整个数据集放入Hive的Warehouse中,并且Hive将对数据集拥有完全的权限。