【发布时间】:2017-07-18 14:04:58
【问题描述】:
这可能是一件简单的事情,但我正在努力寻找答案。当数据加载到 HDFS 时,其分布并加载到多个节点中。数据是分区和分布的。
对于 HIVE,有一个单独的选项可以对数据进行分区。我很确定即使您不提及 PARTITION 选项,在加载配置单元表时,数据也会被拆分并分发到集群上的不同节点。在这种情况下,这个命令有什么额外的好处。
【问题讨论】:
-
分发与它无关(分区)。它与本地文件系统中的概念完全相同。
-
分区将数据存储在每个分区的子目录中。当您按分区列进行过滤时,hive 将仅扫描您的过滤器中指定的子目录,这将为您提供更好的性能。正如@DuduMarkovitz 所说,这与HDFS 数据分发和复制完全无关。
-
如果我错了,请纠正我。当您将数据加载到配置单元表中时,数据被分段或分区为块并保存在集群中的不同节点上。我的假设是,即使对数据进行分区也会做同样的事情。即使数据在 HIVE 中分区时被排列在文件夹和子文件夹中,它仍然作为块保存在 HDFS 中。如果是这样,在这种情况下分区在做什么。它提供了哪些额外的好处。
-
同样的问题,同样的答案。 “标准”数据库上的分区有什么好处?
-
好的,知道了。当我们运行查询时,我认为它只会扫描与我们感兴趣的特定分区相关的块,而不是遍历所有块。我认为数据将在块中进行混洗以容纳与这些分区相关的数据。
标签: hadoop hive hdfs cloudera partitioning