【问题标题】:Are new records added into Hive table (ORC format) appended into the last stripe or a brand new stripe?添加到 Hive 表(ORC 格式)中的新记录是附加到最后一个条带还是一个全新的条带?
【发布时间】:2019-12-25 00:54:19
【问题描述】:

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

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

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

【问题讨论】:

    标签: hive orc


    【解决方案1】:

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

    所以when we insert data 会一直在 Hive 表中创建新文件。

    如果你想merge这些文件,你可以使用concatenate

    Alter table <table_name> CONCATENATE;
    

    (或)

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

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

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

    【讨论】:

    • 感谢@Shu,这很清楚,对我有很大帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多