似乎在Python中创建Parquet文件的最常见方法是首先创建一个Pandas数据框架,然后使用pyarrow将表格写入parquet。我担心这可能会在内存使用方面过度负担,因为它需要至少在内存中存储一个完整的数据集以便创建Pandas数据框架。
我想知道是否由于列压缩要求而需要将整个数据集加载到内存中,或者是否存在更有效和基于流的方法。在我的情况下,我将以流方式接收记录。对于类似的CSV输出过程,我们按1000行一批将行写入磁盘,因此需要保存在内存中的行数从未达到完整数据集的大小。
我应该…?:
1.只需创建一个Pandas数据框架,然后将其写入parquet。(意味着整个数据集都需要存储在内存中,但我们将其视为必要的要求。) 2.在接收到每1000行左右的记录时,使用某种适合流式处理的方式写入,以最小化整个过程中的总点时RAM消耗。(我没有看到有关如何执行此操作的文档,并且我不确定它是否适用于parquet。) 3.将所有内容写入CSV,然后使用一个智能读取/分析CSV内容并在事后创建压缩的parquet的函数。(运行时间可能会变慢,但内存占用低,大型文件故障几率低。)
想法?建议?
我想知道是否由于列压缩要求而需要将整个数据集加载到内存中,或者是否存在更有效和基于流的方法。在我的情况下,我将以流方式接收记录。对于类似的CSV输出过程,我们按1000行一批将行写入磁盘,因此需要保存在内存中的行数从未达到完整数据集的大小。
我应该…?:
1.只需创建一个Pandas数据框架,然后将其写入parquet。(意味着整个数据集都需要存储在内存中,但我们将其视为必要的要求。) 2.在接收到每1000行左右的记录时,使用某种适合流式处理的方式写入,以最小化整个过程中的总点时RAM消耗。(我没有看到有关如何执行此操作的文档,并且我不确定它是否适用于parquet。) 3.将所有内容写入CSV,然后使用一个智能读取/分析CSV内容并在事后创建压缩的parquet的函数。(运行时间可能会变慢,但内存占用低,大型文件故障几率低。)
想法?建议?