我有一个大的日志文件,我加载到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)?这将浪费资源.
您的问题表明您已经INTERNAL使用配置单元创建了一个表,并且正在HIVE从位置将数据加载到表中HDFS。
当您使用命令将数据加载到内部表中时LOAD DATA INPATAH,它将数据从主位置移动到另一个位置。在你的情况下,它应该是/user/hive/warehouse/log_analysis。所以基本上它提供了数据的新地址和新的 HDFS 位置,并且您不会在之前的位置看到任何内容。
当您将数据从 HDFS 上的一个位置移动到另一位置时。NameNode 接收数据的新位置,并删除该数据的所有旧元数据。因此数据和数据不会有任何重复信息,只会有3次复制,并且只会存储3次。
我希望你清楚。
| 归档时间: |
|
| 查看次数: |
1339 次 |
| 最近记录: |