Hive 配置单元是否重复数据?

Hive 配置单元是否重复数据?,hive,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; 现在,当我看到“/

我有一个很大的日志文件,我将它加载到
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;
现在,当我看到“/user/hive/warehouse/”目录时,有一个表文件并将其复制到本地,它包含所有日志文件数据

我的问题是:
HDFS
中的现有文件被复制。然后将该文件加载到存储在
HDFS
上的配置单元表中也会被复制


这是不是同一个文件存储了6次(假设复制系数为3)?这将是对资源的极大浪费。

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

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

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


我希望您能明白。

正确,如果您从
HDFS
加载数据,数据将从
HDFS
移动到
/user/hive/warehouse/yourdatabasename/tablename
,这是正确的。因此,您必须明智地选择要在HDFS中保留哪些数据