gpt4 book ai didi

Hive 桶与分区

转载 作者:行者123 更新时间:2023-12-01 13:48:52 25 4
gpt4 key购买 nike

从问题继续:What is the difference between partitioning and bucketing a table in Hive ?

假设我们按 Salary 列对 employee 表进行了分区。如果我们从这个表中编写一个选择查询,并在 where 子句中使用基于工资列的条件,那么该查询将运行得很快......因为它只会从特定分区中获取详细信息。

但是,如果我们根据工资列对同一个表进行分桶并设置固定的分桶数,而不是分区。那么在这种情况下,如果我们编写相同的查询,我想知道该查询将如何从存储桶中受益?谁能解释一下?

最佳答案

分桶的一个用例是数据的快速采样。

想象一张 table

CREATE TABLE employee(employeeId String, salary Double) 
CLUSTERED BY(user_id) INTO 10 BUCKETS;

我们不是按薪水而是按 employeeId 进行分桶,这样每个员工都会随机放入一个分桶中。我们可以说,从统计上讲,薪水很可能在各个桶中分配得相当均匀。

如果我们想找出平均工资,我们可以在桶的子集上运行这个查询,这比在整个数据集上运行查询更快,但给出了一个很好的近似值。

Select Average(salary) FROM employee TABLESAMPLE(BUCKET 1 OUT OF 10 ON employeeId);

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

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