0

我的箭头编写器从 CSV 文件读取数据适用于小于 1 GB 的数据,但停留在这个限制附近(编写代码似乎被阻止)。我有足够的内存给进程(-Xmx12g),数据大小约为 1.2GB。具有较少行和大约 0.4 GB 的类似结构化文件可以使用相同的代码正常工作。

我只是想知道,如果 apache 箭头当前对创建的向量有一些限制,或者对行数有限制。

4

1 回答 1

0

最好澄清一下它到底是如何失败的(我假设你看到了一个异常)。但要解决这个问题。

目前,每个包含向量的 Buffer 都有 2GB 的限制。此外,当前所有箭头向量都使用int索引,因此行限制为 2^31-1。由于默认分配过程的工作方式(缓冲区大小加倍),您可能会在没有预分配的情况下接近实际限制。

一般来说,Arrow 的最佳实践尤其是 Java 是创建小批量(例如,读取 N 行将它们转换为批量并再次将它们写出,而不是尝试读取整个文件)。在最近重构的JDBC 适配器中可以看到这种方法的一个示例。

最近有关于更改 API 以支持 64 位索引/大小的开发人员邮件列表的讨论。

于 2019-09-18T06:39:04.163 回答