hadoop—配置单元外部表数据是否以与内部表相同的方式分发到数据节点?

66bbxpm5  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(361)

我找不到参考信息来解释配置单元外部表的某些细节。当一个位于默认数据仓库之外的文件被加载到一个外部表(使用位置)时,数据是否像内部表那样被摄取并分布在数据节点中——并且用作源的文件在文件系统中保持不变,这实际上复制了数据?

wgeznvg7

wgeznvg71#

如果数据已经在hdfs中,则不存在重复。外部表指向其存储的任何hdfs位置。。。

mrfwxfqh

mrfwxfqh2#

外部表指向其存储的任何hdfs位置,而不是存储在由configuration属性指定的文件夹中 hive.metastore.warehouse.dir (仓库默认数据库的位置)。
创建外部表时不会复制数据。因此,删除外部表时,表中的数据不会从文件系统中删除。
注意:即使在内部表数据不分布在节点之间的情况下,数据也会根据复制因子进行复制。

qpgpyjmq

qpgpyjmq3#

“external”是指配置单元用于存储数据的默认目录的外部(例如,在hortonworks上是/apps/hive/warehouse)。这并不意味着它在本地文件系统上-它必须在hdfs上,在hive指向的同一个hadoop集群上。
因为它是hdfs数据,所以对它的配置单元查询的处理方式与直接对该数据进行操作的mapreduce作业完全相同。也就是说,在hive对其进行操作之前,不会将其复制到/apps/hive/warehouse。功能上唯一的区别是,如果您删除一个外部表,数据不会从hdfs中删除。除此之外,对于内部表和外部表,其他所有操作都完全相同。

相关问题