5

我有镶木地板格式的数据,太大而无法放入内存(6 GB)。我正在寻找一种使用 Python 3.6 读取和处理文件的方法。有没有办法流式传输文件,下采样并保存到一个dataframe?最终,我希望有dataframe格式的数据可以使用。

在不使用 Spark 框架的情况下尝试执行此操作是错误的吗?

我尝试过使用pyarrowfastparquet但在尝试读取整个文件时出现内存错误。任何提示或建议将不胜感激!

4

2 回答 2

2

Spark 无疑是完成这项任务的可行选择。

我们计划在pyarrow今年添加流式读取逻辑(2019 年,请参阅https://issues.apache.org/jira/browse/ARROW-3771和相关问题)。同时,我建议一次读取一个行组以减轻内存使用问题。你可以用pyarrow.parquet.ParquetFile它的read_row_group方法来做到这一点

于 2019-01-02T16:15:46.020 回答
-1

这不是答案,我在这里发帖是因为这是我在 Stackoverflow 上能找到的唯一相关帖子。我正在尝试使用read_row_group函数,但 python 只会以代码 139 退出。没有其他错误消息,不知道如何解决这个问题..

from pyarrow.parquet import ParquetFile
path = "sample.parquet"
f = ParquetFile(source = path)
print(f.num_row_groups) # it will print number of groups

# if I read the entire file:
df = f.read() # this works

# try to read row group
row_df = f.read_row_group(0)

# I get
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

Python 版本 3.6.3

pyarrow 版本 0.11.1

于 2019-01-24T18:28:07.193 回答