用 pyarrow 将大 pandas 数据帧写成镶木地板

Write large pandas dataframe as parquet with pyarrow

我正在尝试编写一个大型 pandas 数据框(形状 4247x10)

没什么特别的,只是使用下一个代码:

df_base = read_from_google_storage()
df_base.to_parquet(courses.CORE_PATH,
                   engine='pyarrow',
                   compression='gzip',
                   partition_cols=None)

我尝试使用不同的压缩,不同的 partition_cols 但还是失败了。

我提到它适用于小型数据帧 (1000x10<),并且在我调试并留出足够时间时它也适用,但在我的情况下我收到错误:

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

我正在使用的库:

pandas==0.25.3
pyarrow==0.15.1

问题可能与此有关:https://issues.apache.org/jira/browse/PARQUET-1345但我不确定。

这是我找到的解决方法:

from pyarrow import Table
from pyarrow import parquet as pq


df_base = pd.read_csv('big_df.csv')

table = Table.from_pandas(df_base, nthreads=1)
print(table.columns)
print(table.num_rows)
pq.write_table(table, courses.CORE_PATH, compression='GZIP')

我不确定它为什么会失败,但是设置 nthreads=1 有助于避免 SIGSEGV(分段错误)