Hive是否重复数据?

时间:2015-11-06 04:51:24

标签: hive

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

现在我将同一个文件加载到配置单元表中。命令如下:

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;

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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

我希望你能清楚。

答案 1 :(得分:3)

正确,如果您要加载HDFS的数据,数据会从HDFS移至/user/hive/warehouse/yourdatabasename/tablename