【问题标题】:Total number of replicated files after copying hdfs file into hive table将 hdfs 文件复制到 hive 表后复制的文件总数
【发布时间】:2016-08-24 06:04:31
【问题描述】:

假设如果我将 hdfs 中的文件加载到 hive 表中,那么该文件的总副本数是多少。在 hdfs 文件中复制了 3 次,现在复制到 hive 表会产生额外的副本,总共有 6 个副本吗??

【问题讨论】:

  • 请您详细说明一下。
  • 是的,复制是 HDFS 的一部分。
  • 假设我在 hdfs /sample.txt 中有文件,默认情况下已经复制了 3 次。现在我创建了一些 samp hive 表并将 sample.txt 加载到其中,现在 hive 再次生成 3 个 sample.txt 副本以用于 samp 表。所以我觉得从技术上讲,我们有六个 sample.txt 副本。这个假设对吗??

标签: hadoop hive replication


【解决方案1】:

在 HDFS 中,副本数基于复制因子集。 在您的情况下,由于复制因子为 3,因此将有三个副本。

当您执行 sqoop 从 hdfs 导入 hive(到内部表)时,数据仅从 hdfs 上的一个位置复制到 hive 中的表。但是 Hive 数据的复制会根据您的复制因子再次发生。

总共您将得到 3(hdfs) + 1(hive copy)*3 => HDFS 上的 3 个副本和 hive 存储的 3 个数据副本(这不是 6 个副本,因为hive 不以相同的文件格式存储数据)。

如果您对内部表执行 LOAD DATA INPATH,则旧副本将丢失,并且仅存在较新的 hive 副本。因此,您最终将只得到一个配置单元表(及其复制副本)。

在您的情况下,3 个 hive 表副本(因为 rep 设置为 3)。

如果您创建外部表,则不会创建新副本。 Hive 仅创建数据的元数据。因此,您最终会得到 HDFS 副本 + Hive 元存储副本

在您的情况下,HDFS 中的 3 个副本 + 存储在 Hive 上的元数据的 3 个副本

【讨论】:

  • 是的,我同意,起初我们在 HDFS 中有 3 个副本,数据仅从一个位置复制。 Hive 还将数据正确存储到 hdfs,因此当 hive 将该单个副本推送到 hdfs 时,它再次被复制 3 次。所以总和为 6。
  • @TarunChunchu 是的,该数据也被复制了三次,但不是 6 个副本。如果是内部表,它在 HDFS 中的 3 个副本和 Hive 数据的 3 个副本(存储方式不同)。为了清楚起见,我更新了我的答案。
猜你喜欢
  • 2020-03-23
  • 2014-06-15
  • 2019-11-14
  • 2013-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-01
相关资源
最近更新 更多