gpt4 book ai didi

hadoop - Hive - 分桶和分区

转载 作者:可可西里 更新时间:2023-11-01 16:25:31 25 4
gpt4 key购买 nike

我们应该根据什么来缩小对 Hive 中的一组列使用分区还是分桶?

假设我们有一个庞大的数据集,其中有两列最常被查询——所以我明显的选择可能是根据这两列进行分区,但如果这会导致大量小的在大量目录中创建的文件,而不是根据这些列对数据进行分区是一个错误的决定,并且分桶可能是一个更好的选择。

我们能否定义一种方法来决定是否应该进行分桶或分区?

最佳答案

分桶和分区并不排斥,您可以同时使用。

根据我相当长的 Hive 经验,我的简短回答是“您应该始终使用分区,有时您可能也想分桶”。

如果您有一个大表,分区有助于减少您查询的数据量。分区通常表示为 HDFS 上的目录。一个常见的用法是按年/月/日分区,因为大多数人按日期查询。唯一的缺点是您不应该对具有大基数的列进行分区。基数是大数据中的一个基本概念,它是一列可能具有的值的数量。例如,'US state' 的基数较低(大约 50),而例如 'ip_number' 的基数很大(2^32 个可能的数字)。如果在高基数的字段上分区,hive 将在 HDFS 中创建大量目录,这并不好(namenode 上的额外内存负载)。

分桶可能很有用,但在向表中插入数据时也必须遵守纪律。 Hive 不会检查您插入的数据是否按照预期的方式分桶。分桶表必须执行 CLUSTER BY,这可能会在您的处理中增加一个额外的步骤。但是,如果您进行大量联接,那么如果两个 表都以相同的方式分桶(在相同的字段和相同数量的分桶上),则可以大大加快它们的速度。此外,一旦决定了存储桶的数量,就无法轻易更改。

关于hadoop - Hive - 分桶和分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34096470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com