我有一张带扣子的 hive table。它有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个文件。
我再次需要将另一组数据插入到user表中。所以我运行了下面的查询。
set hive.enforce.bucketing = true;
insert into user
select * from third_user;
现在又有4个文件放在用户文件夹目录下。现在它总共有8个文件。
在一张有扣子的table上做这种多次插入可以吗?它会影响table的装饰吗?
2条答案
按热度按时间vfwfrxfs1#
我不认为这应该是一个问题,因为你已经宣布,你想在用户\号bucketing。所以每次你要插入它将创建4个以上的文件。
bucketing用于更快的查询处理,因此,如果它每次生成4个以上的文件,它将使您的查询处理更快。
i7uq4tfw2#
我想出来了!!实际上,如果你在一个带扣的Hive台上做多次插入。Hive不会这样抱怨。所有配置单元查询都可以正常工作。
尽管如此,这样的操作破坏了表的bucketing概念。我的意思是,在一个带扣的表格中多次插入之后,抽样就失败了。
多次插入后,tablasample无法正常工作。
即使排序合并bucket map join在这样的操作之后也不起作用。