繁体   English   中英

确定配置单元表上的存储桶配置

[英]Determining Bucketing Configuration on Hive Table

我很好奇是否有人可以提供更多有关如何在Hive表上配置存储桶属性的说明。 我看到它对连接有帮助,我相信我读到将其放在您将用于连接的列上是很好的。 那可能是错误的。 我也很好奇如何确定要选择的存储桶数量。

如果有人可以给出简短的解释和有关如何确定所有这些事情的文档,那将是很好的。

在此先感谢您的协助。

克雷格

如果要首先在表中实现存储,则应设置该属性

设置hive.enforce.bucketing = true;

它将强制执行存储操作。

carnality:列的可能值数目。

如果您使用Cluster By子句实现存储桶,则存储桶列应具有较高的破坏性,那么您将获得更好的性能。

如果您使用Partitioned By子句来实现分区,则您的分区列的工作效率较低,那么您将获得更好的性能

根据使用情况,您可以选择存储桶数。最好选择(存储桶数)<(您的hdfs块大小),并且应该为2的幂。存储桶将始终创建文件而不是目录。

以下是设计铲斗时应考虑的一些建议。

  1. 存储桶通常在最关键的列,单个列或一组列上创建,因此这意味着这些列将是各种连接条件的主要列,因为存储区的概念是对这些列集进行哈希处理并存储建议您不要仅使用关键的所有连接列,而我们认为这样可以提高性能。
  2. 存储桶的数量以2为指数。存储桶的数量确定要运行的reducer的数量,并确定存储数据的最终文件数。 因此,必须设计存储桶的数量,同时要记住要处理的数据的大小,并要避免在hdfs中避免大量的小文件,而要避免大量的大文件,从而提高配置单元查询的检索速度和优化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM