Hive中的分桶是什么?


分桶是Hive中用于组织数据的一种方法。它是一种将数据分成称为桶的范围的概念。当分区变得困难时,Hive中的分桶很有帮助。用户可以通过哈希值确定特定桶的范围。

分区表可以进行分桶以进一步分离数据,从而更有效地执行查询。每个桶都作为表或分区目录中HDFS上的一个文件存储。具有相似列值的记录始终存储在同一个桶中。可以在分区表之上创建分桶,然后将表分割以提高查询性能。

分桶的优势

以下是分桶的优势:

  • 与非分桶表相比,分桶表提供组织良好的采样。

  • 与非分桶表相比,分桶表中的Map端连接更快。

  • 分桶表提供更高效的查询响应。

  • 分桶灵活,可以将每个桶中的记录组织成一个或多个列。

注意 - 分桶不负责正确填充表。因此,最终用户必须自行将数据加载到桶中。

分桶的特性

以下是分桶的主要特性:

  • 分桶基于分桶列中的哈希函数的概念。

  • hash_function基于分桶表的种类。但是,系统将永久保存具有相似分桶列的数据在同一个桶中。

  • 使用CLUSTERED BY子句将表分成桶。

  • 每个桶在表目录中包含单个文件。

  • Hive中的分桶可以与分区一起使用,也可以不与分区一起使用。

  • 由分桶表组成的文件几乎均匀分布。

Hive分区和Hive分桶的区别

分区和分桶非常相似。它们都在存储数据之前对数据进行分离。它们之间有一些显着区别。分区可能包含多个目录。因此,它适用于低容量数据。分桶在每个分区中包含等量的数据,从而使Map端连接更快。

表可能同时具有分区和分桶信息。在这种情况下,每个分区内的文件都包含一个分桶文件。

结论

本文中我们讨论的所有内容都表明,Hive中的分桶对于大型数据集连接非常有用,如果没有高端计算机资源能力,这些连接将是不可能的。

对于具有过滤器的分桶列的查询,Hive中的分桶效率更高。总的来说,使用分桶表可以更有效地利用资源。更多的桶需要更少的内存。但请记住,过多的桶会导致不必要的并行性。

更新于:2022年8月25日

4K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告