分区的基础上 再分桶 1个数据文件划分为多个数据文件
hive 分桶 其实是hash模 桶数
分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储。
对于hive中每一个表、分区都可以进一步进行分桶。
由列的哈希值除以桶的个数来决定每条数据划分在哪个桶中。
适用场景:
数据抽样( sampling )、map-join
开启支持分桶
set hive.enforce.bucketing=true;
默认:false;设置为true之后,mr运行时会根据bucket 的个数自动分配reduce task个数。(用户也可以通过
mapred.reduce.tasks自己设置reduce任务个数,但分桶时不推荐使用)
注意:一次作业产生的桶(文件数量)和reduce task个数一致。 一般不自己设置
也就是桶的数量和reduce 一致的
往分桶表中加载数据
insert into table bucket_table select columns from tbl;
insert overwrite table bucket_table select columns from tbl;

Hive分桶基于列值的哈希模运算,将数据分布到不同文件中,适用于数据抽样和map-join。桶的数量通常与reduce任务个数一致,不建议手动设置。加载数据到分桶表需用特定方式,不能使用load。桶表抽样查询使用tablesample语法,例如:TABLESAMPLE(BUCKET x OUT OF y)。
最低0.47元/天 解锁文章
652

被折叠的 条评论
为什么被折叠?



