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

时间:2015-02-18 10:49:56

标签: 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;

最初我使用以下查询在此表中插入了一些记录。

set hive.enforce.bucketing = true;
insert into user
select * from second_user;

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

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

set hive.enforce.bucketing = true;
insert into user
select * from third_user;

现在另有4个文件在用户文件夹目录下创建。现在它共有8个文件。

将这种多重插入物放到一个布料表中是否可以? 它会影响桌子的分组吗?

2 个答案:

答案 0 :(得分:2)

我想通了!! 实际上,如果你在一个bucketed蜂巢表上做了多个插入。 Hive不会这样抱怨。 所有配置单元查询都可以正常工作。

话虽如此,这样的操作破坏了桌子的分层概念。我的意思是在多次插入到一个分块表后,采样失败了。

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

即使排序合并桶映射连接也不起作用。

答案 1 :(得分:0)

我不认为这应该是一个问题,因为你已经宣布要在user_id上进行分组。所以每次插入它都会再创建4个文件。

Bucketing用于更快的查询处理,因此如果每次再制作4个文件,它将使您的查询处理速度更快。

相关问题