首页 > 解决方案 > 添加到 Hive 表(ORC 格式)中的新记录是附加到最后一个条带还是一个全新的条带?

问题描述

假设我创建了一个 ORC 格式的 hive 表并将 1M 记录插入到表中,这创建了一个具有 17 个条带的文件。最后一个条带未满。

然后我在这个表中插入了另外 100 条记录,新的 100 条记录会附加到最后一个条带中还是会创建一个新条带?

我曾尝试在 HDFS 集群上对其进行测试,似乎每次我们插入新记录时,都会创建一个新文件(当然,也会创建新的条带)。想知道为什么?

标签: hiveorc

解决方案


原因是 HDFS 不支持编辑文件。

因此when we insert data,始终会在 Hive 表中创建新文件。

如果要合并这些文件,可以使用连接

Alter table <table_name> CONCATENATE;

(或者)

您可以插入覆盖您选择的同一个表以将所有小文件合并到大文件中。

insert overwrite <db_table>.<table1> select * from <db_table>.<table1>

您还可以使用sort by distribution by来控制在 HDFS 目录中创建的文件数。


推荐阅读