我有镶木地板格式的数据,太大而无法放入内存(6 GB)。我正在寻找一种使用 Python 3.6 读取和处理文件的方法。有没有办法流式传输文件,下采样并保存到一个dataframe
?最终,我希望有dataframe
格式的数据可以使用。
在不使用 Spark 框架的情况下尝试执行此操作是错误的吗?
我尝试过使用pyarrow
,fastparquet
但在尝试读取整个文件时出现内存错误。任何提示或建议将不胜感激!
我有镶木地板格式的数据,太大而无法放入内存(6 GB)。我正在寻找一种使用 Python 3.6 读取和处理文件的方法。有没有办法流式传输文件,下采样并保存到一个dataframe
?最终,我希望有dataframe
格式的数据可以使用。
在不使用 Spark 框架的情况下尝试执行此操作是错误的吗?
我尝试过使用pyarrow
,fastparquet
但在尝试读取整个文件时出现内存错误。任何提示或建议将不胜感激!
Spark 无疑是完成这项任务的可行选择。
我们计划在pyarrow
今年添加流式读取逻辑(2019 年,请参阅https://issues.apache.org/jira/browse/ARROW-3771和相关问题)。同时,我建议一次读取一个行组以减轻内存使用问题。你可以用pyarrow.parquet.ParquetFile
它的read_row_group
方法来做到这一点
这不是答案,我在这里发帖是因为这是我在 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