如何将dataframe分区一一保存到同一个本地数据库?

问题描述 投票:0回答:1

我有大约 30GB 未压缩的空间数据,包含几何图形、id 和一些字符串。它们与这些列一起保存为 Dask DataFrame。 id|几何|...| 12|点(..)|...|

因为它们太大了,无法容纳任何具有一个大数据框的worker,所以我考虑将它们保存到worker上每个分区的本地数据库中。

不知道这样是否正确?或者有更好的方法来做到这一点? 顺便说一句,我不在乎返回的数据,所以我放了一个元数据。我假设计算调用是同步的,它将在所有保存调用返回后返回。

 def save(self, gdf, layer):
     features = gdf["geometry"].values
     if features.shape[0] > 0:
        ... a call to file database
        return dd.utils.make_meta(features)

dataframe.map_partitions(self.save, layer=layer, meta=dd.utils.make_meta(features)).compute()

谢谢

dask
1个回答
0
投票

我从此页面找到了答案https://docs.dask.org/en/stable/delayed-collections.html

dfs = [delayed(load)(fn) for fn in filenames]
df = dd.from_delayed(dfs)
df = ... # do work with dask.dataframe
dfs = df.to_delayed()
writes = [delayed(save)(df, fn) for df, fn in zip(dfs, filenames)]
dd.compute(*writes)
© www.soinside.com 2019 - 2024. All rights reserved.