【发布时间】:2021-05-14 10:07:46
【问题描述】:
我有一个 .pq 文件(大约 2Gb),我想在其中使用 dask 更改列名。
我没有问题将文件读取到 dask DataFrame 并且我能够重命名列。 但是,当使用 ddf.to_parquet() 将 .pq 文件写回磁盘时,该作业会失败,因为 dask 似乎试图将其放入内存中(但它不适合)。
为什么会这样?我预计 dask 会迭代地执行此操作。如何分块写入目标文件?
下面是我正在使用的代码。
import dask.dataframe as dd
ddf = dd.read_parquet(
'/path/to/file/file.pq',
engine='pyarrow'
)
ddf = ddf.rename(columns={'old_column_name': 'new_column_name'})
# the step which fails
ddf.to_parquet(
'/path/to/file/edited/',
engine='pyarrow',
write_index=False
)
提前致谢!
【问题讨论】:
-
你得到什么错误?在您执行
to_parquet之前,它不会读取实际数据。这就是为什么如果它与内存相关,它只会在最后一步失败。尝试更改 read_parquet 的 chunksize 参数。我想知道是否有为什么在不阅读整个内容的情况下更改磁盘上的列名... -
不,没有方便的方法来就地更改列名。使用字节编辑,您也许可以使用与原始名称相同长度的名称。
标签: python pandas dask parquet