Hive外部表数据是否以与内部表相同的方式分发到数据节点?

时间:2013-12-30 18:03:28

标签: hadoop hive external-tables

我找不到参考信息来解释Hive外部表的某些细节。当位于默认数据仓库之外的文件被加载到外部表(使用LOCATION)时,数据被摄取并在数据节点之间分配,就像内部表一样 - 并且用作源的文件在文件系统,它基本上复制数据?

3 个答案:

答案 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表时,表中的数据不会从文件系统中删除。

注意:即使内部表中的数据不是在节点之间分配,也会根据复制因子 复制数据。