添加到 Hive table(ORC 格式)的新记录是附加到最后一个条带还是一个全新的条带?

Are new records added into Hive table (ORC format) appended into the last stripe or a brand new stripe?

假设我创建了一个 ORC 格式的配置单元 table 并将 1M 条记录插入到 table 中,这会创建一个包含 17 个条带的文件。最后一个条纹未满。

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

我试过在HDFS集群上测试过,好像每次我们插入新记录时,都会创建一个新文件(当然,也会创建新的条带)。想知道为什么?

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

因此 when we insert data 进入 Hive table 将始终创建新文件。

以防万一 these files you can use concatenate

Alter table <table_name> CONCATENATE;

(或)

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

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

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