gpt4 book ai didi

python - 在 Dask 中序列化大于 2GB 的数据时出错

转载 作者:行者123 更新时间:2023-11-30 22:31:14 27 4
gpt4 key购买 nike

我使用带有一些较大中间值的 Dask,并且从 pickle 中收到如下错误:

error: 'i' format requires -2147483648 <= number <= 2147483647

发生什么事了? Dask 不支持序列化大于 2GB 的数据 block 吗?

最佳答案

Dask 有时使用 Pickle 和 Cloudpickle 库来序列化数据。在 Python 2 Pickle 中,有 2GB 的限制。这个问题有几个解决方案:

使用较小的 block

您可能希望减小块大小以传递每个小于 2GB 的数据位。这也有助于您的表现。对于当今的大多数应用程序来说,2GB block 相当大。我个人倾向于选择接近 100MB 的 block 大小。

在 dask.dataframe 中,您通常可以在读取数据时控制 block 大小,例如使用 dd.read_csv 中的 blocksize= 关键字(尽管不同的数据摄取方法将有不同的方法来做到这一点)。

或者,您可以重新分区数据。

df = df.repartition(npartitions=1000)

定义自定义序列化器

Dask 不必使用 Pickle,事实上,它通常不适用于 NumPy 数组等特殊数据类型。有关如何注册您自己的序列化函数,请参阅以下文档:

http://distributed.readthedocs.io/en/latest/serialization.html

使用Python 3

Python 2 的生命周期已接近尾声。现在可能是考虑开始使用 Python 3 的合适时机,这样许多问题就迎刃而解了。大多数社区库现在对 Python 3 的支持与对 Python 2 的支持一样好,甚至更好。

当然,切换可能是一个挑战,尤其是对于大型企业代码库,因此上述其他选项在短期内可能就足够了。

关于python - 在 Dask 中序列化大于 2GB 的数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45864128/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com