当数据无法容纳在内存中时,将迟钝的数据帧存储到拼花地板上

时间:2020-07-02 15:52:39

标签: dask parquet

我正在尝试将dask数据帧的内容存储到镶木地板中。使用read_sql_table从数据库中读取内容:

import dask.dataframe as dd
df = dd.read_sql_table(table, uri, index_col)
df.to_parquet(path)

执行此操作时,首先将所有数据首先读取到内存中。但是由于整个数据集无法容纳到内存中,因此内核最终将崩溃。如何对数据进行分块或管道传输,以便该操作成功?

(我正在使用fastparquet作为引擎,但尚未结婚。)

1 个答案:

答案 0 :(得分:0)

Dask并不打算将整个数据集读入内存。它开始读取预计约为256MiB的块,然后将这些块存储到Parquet中。如果您有许多线程而没有那么多内存,或者如果Dask估计的块大小是错误的,则可能计算错误。

您可以考虑使用bytes_per_chunk=函数的read_sql_table参数减小块大小