可以将数据多次插入到分桶配置单元表中

sun*_*nil 5 hadoop hive bucket

我有一个带桶的蜂巢表。它有4个桶。

CREATE TABLE user(user_id BIGINT, firstname STRING, lastname STRING)
COMMENT 'A bucketed copy of user_info'
CLUSTERED BY(user_id) INTO 4 BUCKETS;
Run Code Online (Sandbox Code Playgroud)

最初,我使用以下查询将一些记录插入到该表中。

set hive.enforce.bucketing = true;
insert into user
select * from second_user;
Run Code Online (Sandbox Code Playgroud)

此操作后在 HDFS 中,我看到在此表目录下创建了 4 个文件。

我再次需要将另一组数据插入到用户表中。所以我运行了下面的查询。

set hive.enforce.bucketing = true;
insert into user
select * from third_user;
Run Code Online (Sandbox Code Playgroud)

现在另外 4 个文件被打包在用户文件夹 dir 下。现在它总共有8个文件。

将这种多次插入到分桶表中是否可以?它会影响表的分桶吗?

sun*_*nil 2

我想到了!!实际上,如果您在存储桶的配置单元表上执行多次插入。Hive 不会这样抱怨。所有配置单元查询都可以正常工作。

话虽如此,这样的操作破坏了表的分桶概念。我的意思是在多次插入存储表后采样失败。

多次插入后 TABLASAMPLE 无法正常工作。

即使排序合并桶映射连接在这样的操作之后也不起作用。