配置单元中的桶策略

i2byvkas  于 2021-06-25  发布在  Hive
关注(0)|答案(2)|浏览(537)

我们可以在配置单元中的角色字段上创建bucket吗?例子:

create table EmpTab(
    emp_id string,
    emp_name string,
    emp_city string,
    emp_grade char
);

我可以在emp\u grade列上创建bucket吗?如果没有,那为什么?

brgchamk

brgchamk1#

是的,你可以。你可以用拼图 CLUSTERED BY(emp_grade) INTO 5 BUCKETS 为了这个。
创建带扣表的示例:

CREATE TABLE user_info_bucketed(user_id BIGINT, firstname STRING, lastname STRING)
COMMENT 'A bucketed copy of user_info'
CLUSTERED BY(user_id) INTO 256 BUCKETS;
tnkciper

tnkciper2#

配置单元没有显式限制数据所在列的数据类型。以及 char 是一个合法的扣球类型。
您需要在创建表时使用指定bucketing列 clustered by .

create table EmpTab(
    emp_id string,
    emp_name string,
    emp_city string,
    emp_grade char(10)
) clustered by (emp_grade) into 32 buckets
;

注意, clustered by 创建表时不限制数据插入表的方式。
为了确保bucked表的数据按照其ddl进行组织,请强制使用与bucket数相同的reducer数。
在2.x之前,只需设置 hive.enforce.bucketing 成为 true .
或者您可以手动设置减速器的数量,并添加 cluster byselect 条款。
在2.x之后,强制是默认的,conf hive.enforce.bucketing 已删除。

相关问题