如何附加到镶木地板文件以及它如何影响分区?
Posted
技术标签:
【中文标题】如何附加到镶木地板文件以及它如何影响分区?【英文标题】:How can one append to parquet files and how does it affect partitioning? 【发布时间】:2021-11-06 11:35:01 【问题描述】:parquet 是否允许定期附加到 parquet 文件?
如果有的话,追加与分区有何关系?例如,如果我能够识别具有低基数的列并按该列对其进行分区,如果我要向其附加更多数据,则镶木地板能够在保留分区的同时自动附加数据,还是必须重新分区文件?
【问题讨论】:
镶木地板文件不能被修改是我的理解。 pyarrow 也不允许附加到镶木地板文件。 “追加”到分区 parquet 文件的唯一选项是使用 Spark API:***.com/a/42140475/1157754。我会向您指出该答案下的 cmets,因为这并不是真正的“附加”。 【参考方案1】:parquet 是否允许定期附加到 parquet 文件?
是和否。parquet 规范描述了一种可以通过读取现有页脚、写入行组,然后写出修改后的页脚来附加的格式。这个过程描述了一下here。
目前没有 parquet 实现支持此操作。通过在内存中缓存或写入小文件并稍后将它们批处理在一起,缓存和批处理通常是可以接受的,复杂性更低,并且可能具有更好的性能。
如果有的话,追加与分区有何关系?
Parquet 没有任何分区的概念。
许多支持 parquet 的工具都实现了分区。例如,pyarrow 有一个支持分区的datasets 功能。如果您要使用此功能追加新数据,则会在相应的分区目录中创建一个新文件。
【讨论】:
以上是关于如何附加到镶木地板文件以及它如何影响分区?的主要内容,如果未能解决你的问题,请参考以下文章