可以将数据多次插入分桶式配置单元 table
Can in insert data multiple times into a bucketed hive table
我有一个桶状配置单元 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;
最初我使用以下查询将一些记录插入到此 table 中。
set hive.enforce.bucketing = true;
insert into user
select * from second_user;
执行此操作后在 HDFS 中,我看到在此 table 目录下创建了 4 个文件。
我再次需要将另一组数据插入用户 table。所以我 运行 下面的查询。
set hive.enforce.bucketing = true;
insert into user
select * from third_user;
现在在用户文件夹目录下创建了另外 4 个文件。现在共有8个文件。
在分桶 table 中执行这种多次插入是否合适?
它会影响 table 的分桶吗?
我认为这不是问题,因为您已声明要在 user_id 上分桶。所以每次你插入它都会创建 4 个文件。
分桶用于更快的查询处理,因此如果它每次多生成 4 个文件,它将使您的查询处理速度更快。
我明白了!!
实际上,如果您在分桶式配置单元 table 上进行多次插入。 Hive 不会这样抱怨。
所有配置单元查询都可以正常工作。
话虽如此,这样的操作破坏了 table 的分桶概念。我的意思是在多次插入分桶后 table 采样失败。
多次插入后 TABLASAMPLE 无法正常工作。
即使是sort merge bucket map join在这样的操作后也不起作用。
我有一个桶状配置单元 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;
最初我使用以下查询将一些记录插入到此 table 中。
set hive.enforce.bucketing = true;
insert into user
select * from second_user;
执行此操作后在 HDFS 中,我看到在此 table 目录下创建了 4 个文件。
我再次需要将另一组数据插入用户 table。所以我 运行 下面的查询。
set hive.enforce.bucketing = true;
insert into user
select * from third_user;
现在在用户文件夹目录下创建了另外 4 个文件。现在共有8个文件。
在分桶 table 中执行这种多次插入是否合适? 它会影响 table 的分桶吗?
我认为这不是问题,因为您已声明要在 user_id 上分桶。所以每次你插入它都会创建 4 个文件。
分桶用于更快的查询处理,因此如果它每次多生成 4 个文件,它将使您的查询处理速度更快。
我明白了!! 实际上,如果您在分桶式配置单元 table 上进行多次插入。 Hive 不会这样抱怨。 所有配置单元查询都可以正常工作。
话虽如此,这样的操作破坏了 table 的分桶概念。我的意思是在多次插入分桶后 table 采样失败。
多次插入后 TABLASAMPLE 无法正常工作。
即使是sort merge bucket map join在这样的操作后也不起作用。