1

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

4

3 回答 3

1

如果数据已经在 HDFS 中,则没有重复。EXTERNAL 表指向任何 HDFS 位置用于存储...

于 2013-12-30T18:30:42.010 回答
0

“外部”是指 Hive 用于存储数据的默认目录的外部(例如,在 Hortonworks 上是 /apps/hive/warehouse)。这并不意味着它在本地文件系统上——它必须在 HDFS 上,在 Hive 指向的同一个 Hadoop 集群上。

由于它是 HDFS 数据,因此对它的 Hive 查询的处理方式与您编写了直接在该数据上操作的 mapreduce 作业完全相同。也就是说,在hive对其进行操作之前,不会将其复制到/apps/hive/warehouse。功能上唯一的区别是,如果您 DROP TABLE 一个外部表,数据不会从 HDFS 中删除。除此之外,对于内部表和外部表,其他一切都完全相同。

于 2013-12-30T18:57:49.663 回答
0

EXTERNAL 表指向任何 HDFS 位置进行存储,而不是存储在配置属性 hive.metastore.warehouse.dir(仓库的默认数据库位置)指定的文件夹中。

创建外部表时不会复制数据。因此,当删除 EXTERNAL 表时,表中的数据不会从文件系统中删除。

注意:即使内部表数据没有分布在节点之间,数据也会根据复制因子进行复制

于 2016-08-25T09:04:20.617 回答