Hive是否重复数据?

sak*_*shi 5 hive

我有一个大的日志文件,我加载到HDFS.HDFS将根据机架感知复制到不同的节点.

现在我将相同的文件加载到配置单元表中.命令如下:

create table log_analysis (logtext string) STORED AS TEXTFILE
LOCATION '/user/hive/warehouse/';

LOAD DATA INPATH '/user/log/apache.log' OVERWRITE INTO TABLE log_analysis;
Run Code Online (Sandbox Code Playgroud)

现在,当我去查看'/ user/hive/warehouse /'目录时,有一个表文件并将其复制到本地,它具有所有日志文件数据.

我的问题是:HDFS复制现有文件.然后在hive表中加载该文件,存储HDFS也会被复制.

是不是存储了6次不同的文件(假设复制因子是3)?这将浪费资源.

San*_*ngh 3

您的问题表明您已经INTERNAL使用配置单元创建了一个表,并且正在HIVE从位置将数据加载到表中HDFS

当您使用命令将数据加载到内部表中时LOAD DATA INPATAH,它将数据从主位置移动到另一个位置。在你的情况下,它应该是/user/hive/warehouse/log_analysis。所以基本上它提供了数据的新地址和新的 HDFS 位置,并且您不会在之前的位置看到任何内容。

当您将数据从 HDFS 上的一个位置移动到另一位置时。NameNode 接收数据的新位置,并删除该数据的所有旧元数据。因此数据和数据不会有任何重复信息,只会有3次复制,并且只会存储3次。

我希望你清楚。