我可以在不重写整个文件的情况下添加新列吗?

问题描述

我一直在试验 Apache Arrow。我已经使用面向列的内存映射文件很多年了。过去,我为每一列使用了一个单独的文件。 Arrow 似乎喜欢将所有内容都存储在一个文件中。有没有办法在不重写整个文件的情况下添加新列?

解决方法

简短的回答可能是否定的。

Arrow 的内存格式和库支持这一点。您只需创建一个新表(这应该是零拷贝)即可将分块数组添加到表中。

但是,您似乎在谈论将表格存储在文件中。使用的常见文件格式(parquet、csv、feather)都不支持以这种方式对表进行分区。

请记住,如果您正在读取镶木地板文件,您可以指定要读取的列,它只会读取必要的数据。因此,如果您的目标只是支持单个列检索/查询,那么您只需构建一个包含所有列的大表。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...