我正在尝试将dask数据帧的内容存储到镶木地板中。使用read_sql_table
从数据库中读取内容:
import dask.dataframe as dd
df = dd.read_sql_table(table, uri, index_col)
df.to_parquet(path)
执行此操作时,首先将所有数据首先读取到内存中。但是由于整个数据集无法容纳到内存中,因此内核最终将崩溃。如何对数据进行分块或管道传输,以便该操作成功?
(我正在使用fastparquet作为引擎,但尚未结婚。)
答案 0 :(得分:0)
Dask并不打算将整个数据集读入内存。它开始读取预计约为256MiB的块,然后将这些块存储到Parquet中。如果您有许多线程而没有那么多内存,或者如果Dask估计的块大小是错误的,则可能计算错误。
您可以考虑使用bytes_per_chunk=
函数的read_sql_table
参数减小块大小