我找不到参考信息来解释Hive外部表的某些细节。当位于默认数据仓库之外的文件被加载到外部表(使用LOCATION)时,数据被摄取并在数据节点之间分配,就像内部表一样 - 并且用作源的文件在文件系统,它基本上复制数据?
答案 0 :(得分:1)
如果数据已经在HDFS中,则没有重复。 An EXTERNAL table points to any HDFS location for its storage...
答案 1 :(得分:0)
“外部”表示Hive用于存储数据的默认目录的外部(例如,在Hortonworks上,它是/ apps / hive / warehouse)。这并不意味着它位于本地文件系统上 - 它必须位于HFS指向的同一Hadoop集群上的HDFS上。
由于它是HDFS数据,因此Hive查询与您直接编写对该数据进行操作的mapreduce作业完全相同。也就是说,在hive运行之前,它不会被复制到/ apps / hive / warehouse。功能上唯一的区别是,如果您DROP TABLE外部表,则不会从HDFS中删除数据。除此之外,其他一切对于内部表和外部表完全相同。
答案 2 :(得分:0)
EXTERNAL表指向其存储的任何HDFS位置 而不是存储在配置属性指定的文件夹中
hive.metastore.warehouse.dir
(仓库的默认数据库的位置)。
创建外部表时不会复制数据。因此,在删除EXTERNAL表时,表中的数据不会从文件系统中删除。
注意:即使内部表中的数据不是在节点之间分配,也会根据复制因子 复制数据。