添加到 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 目录中创建的文件数。
假设我创建了一个 ORC 格式的配置单元 table 并将 1M 条记录插入到 table 中,这会创建一个包含 17 个条带的文件。最后一个条纹未满。
然后我又插入了 100 条记录到这个 table,新的 100 条记录会被附加到最后一个条带中还是会创建一个新的条带?
我试过在HDFS集群上测试过,好像每次我们插入新记录时,都会创建一个新文件(当然,也会创建新的条带)。想知道为什么?
原因可能是 HDFS 不支持编辑文件。
因此 when we insert data
进入 Hive table 将始终创建新文件。
以防万一
Alter table <table_name> CONCATENATE;
(或)
您可以插入覆盖您选择的相同 table 以将所有小文件合并到大文件中。
insert overwrite <db_table>.<table1> select * from <db_table>.<table1>
您还可以使用 sort by distribute by 来控制在 HDFS 目录中创建的文件数。