内容

更新日志

内容

更新日志

2024.9.0

亮点

将 Bokeh 最低版本提升至 3.1.0

bokeh>=3.1.0 现在是为诊断和分布式集群仪表板所必需的。

更多详情请参见 James BourbeauGH#11375GH#8861

介绍新的 Task 类

添加一个 Task 类来替代用于任务规范的元组。

详情请参阅 Florian JetterGH#11248

其他更改

2024.8.2

亮点

自动选择重新分块方法

为了使用户能够在比以前更大的规模上重新分块数据,Dask 现在在集群上重新分块时会自动选择适当的重新分块方法。这不需要额外的配置,并且默认启用。

具体来说,Dask 在基于任务和点对点(P2P)重新分块之间进行选择。虽然基于任务的重新分块一直是之前的默认选项,但当重新分块需要旧块和新块之间的几乎所有对所有通信时,P2P 重新分块是有益的,例如在空间和时间分块之间切换时。在这些情况下,P2P 重新分块提供恒定的内存使用,并创建更小的任务图。因此,它适用于基于任务的重新分块之前会失败的场景。

要禁用自动选择,用户可以通过配置选择他们偏好的方法。

import dask.config
# Choose either "tasks" or "p2p"
dask.config.set({"array.rechunk.method": "tasks"})

或在重新分块时

import dask.array as da
arr = da.random.random(size=(1000, 1000, 365), chunks=(-1, -1, "auto"))
# Choose either "tasks" or "p2p"
arr = arr.rechunk(("auto", "auto", -1), method="tasks")

更多详情请参见 Hendrik MakaitGH#11337

Dask 数组的新洗牌 API

Dask 为 Dask Arrays 添加了一个 shuffle-API。此 API 允许沿单个维度对数据进行洗牌。它将确保沿此维度的每个元素组都恰好在一个块中。这对于 Xarray 中的 GroupBy-Map 模式是一个非常有用的操作。更多信息和 API 签名请参见 shuffle()

更多详情请参见 GH#11267, GH#11311GH#11326,由 Patrick Hoefler 提供。

Dask 数组的新的 blockwise_reshape API

新的 blockwise_reshape() 为那些不关心底层数组顺序的情况启用了令人尴尬的并行重塑操作。它是令人尴尬的并行,并且不再在底层触发重新分块操作。当你不关心结果数组的顺序时,这很有用,例如,如果对数组应用了归约操作,或者重塑只是暂时的。

arr = da.random.random(size=(100, 100, 48_000), chunks=(1000, 100, 83)
result = reshape_blockwise(arr, (10_000, 48_000))
result.sum()

# or: do something that preserves the shape of each chunk

result = reshape_blockwise(result, (100, 100, 48_000), chunks=arr.chunks)

如果维度数量减少,Dask 会自动计算结果块,但如果维度数量增加,则必须指定结果块。

重塑 Dask 数组通常会在中间进行重新分块操作,从而创建非常复杂的计算,因为 Dask 默认尊重数组的 C 顺序。这确保了生成的 Dask 数组与相应的 NumPy 数组顺序相同。然而,这可能导致非常低效的计算。如果你不关心顺序,blockwise_reshape 比默认实现要高效得多。

警告

块状重塑操作作为默认设置更高效,但它们将返回一个顺序不同的数组。请谨慎使用!

更多详情请参见 GH#11328Patrick Hoefler 提供。

多维位置索引保持块大小一致

使用 vindex() 对 Dask 数组进行索引时,以前会在被索引的维度上创建一个单一的输出块。vindex 通常在 Xarray 中用于在单一步骤中索引多个维度,即:

arr = xr.DataArray(
    da.random.random((100, 100, 100), chunks=(5, 5, 50)),
    dims=['a', "b", "c"],
)

之前,这会将索引维度放入单个块中:

每个单独块的大小增加到超过1GB

Dask 现在使用了一种改进的算法,确保块大小保持一致:

每个单独块的大小增加到超过1GB

更多详情请参见 Patrick HoeflerGH#11330

其他更改

2024.8.1

亮点

改进重塑Dask数组的输出块大小

重塑 Dask 数组时,通常会将维度压缩成一个单一的分块。这导致了非常大的输出分块,随后引发了许多内存溢出错误和性能问题。

arr = da.ones(shape=(1000, 100, 48_000), chunks=(1000, 100, 83))
arr.reshape(1000, 100, 4, 12_000)

之前,这会将最后一个维度放入一个大小为12,000的单个块中。

每个单独块的大小增加到超过1GB

新算法将确保输入和输出之间的块大小保持一致。这将避免块大小的急剧增加和块的碎片化。

每个单独块的大小保持不变

提高Xarray Rechunk-GroupBy-Reduce模式的调度效率

调度器之前为使用群体策略的 Xarray GroupBy-Reduction 模式创建了一个低效的执行图:

import xarray as xr

arr = xr.open_zarr(...)
arr.chunk(time=TimeResampler("ME")).groupby("time.month").mean()

任务图执行顺序算法中的一个问题导致了一种效率低下的执行策略,该策略在集群上积累了大量不必要的内存。改进与 2024.08.0 中的先前排序改进 非常相似。

放弃对 Python 3.9 的支持

此版本根据 NEP 29 放弃了对 Python 3.9 的支持。现在,运行 Dask 所需的最低版本是 Python 3.10。

更多详情请参见 GH#11245GH#8793Patrick Hoefler 提供。

其他更改

2024.8.0

亮点

通过位置索引器提高切片效率和性能

通过位置索引器对 Dask 数组进行切片时的性能改进。随机访问模式现在更加稳定,并产生更易于使用的输出结果。

x[slice(None), [1, 1, 3, 6, 3, 4, 5]]

使用位置索引器之前容易导致输出块的数量急剧增加,并生成非常大的任务图。这一问题已通过更高效的算法得到解决。

新的算法将保持沿被索引轴的块大小相同,以避免块的碎片化或块大小的显著增加。

更多详情和性能基准测试请参见 Patrick HoeflerGH#11262GH#11267

提高 Xarray GroupBy-Reduce 模式的调度效率

调度器之前为 Xarray GroupBy-Reduction 模式创建了一个低效的执行图,例如:

import xarray as xr

arr = xr.open_zarr(...)
arr.groupby("time.month").mean()

任务图执行顺序算法中的一个问题导致了一种低效的执行策略,该策略在集群上积累了大量不必要的内存。

在集群上运行极度并行操作时,内存会不断累积。

该操作本身是令人尴尬的并行。使用适当的执行策略,调度器现在可以以恒定的内存执行操作,避免溢出,并允许我们扩展到更大的数据集。

相同的操作在整个计算过程中以恒定的内存使用量运行,并且可以扩展到更大的数据集。

更多详情和示例请参见 Patrick HoeflerGH#8818

其他更改

2024年7月1日

亮点

更强大的分布式锁

distributed.Lock 现在能够抵御工作节点故障。以前,在持有锁的工作节点丢失或因错误未能释放锁的情况下,可能会发生死锁。

更多详情请参见 Florian JetterGH#8770

其他更改

2024.7.0

亮点

放弃对 pandas 1.x 的支持

此版本放弃了对 pandas<2 的支持。pandas 2.0 现在是运行 Dask DataFrame 所需的最低版本。

partd 的最低版本也提升至 1.4.0。1.4 之前的版本与 pandas 2 不兼容。

更多详情请参见 Patrick HoeflerGH#11199

发布-订阅 API 已弃用

distributed.Pubdistributed.Sub 已被弃用,并将在未来的版本中移除。请改为使用 distributed.Client.log_event()distributed.Worker.log_event()

详情请参见 Hendrik MakaitGH#8724

其他更改

2024.6.2

这是一个补丁发布,用于更新2024.6.1版本中``dask``和``distributed``版本固定的问题。

其他更改

2024.6.1

亮点

此版本包含一个关键修复,修复了当根任务的依赖项因工作节点丢失等原因被重新调度时可能出现的死锁问题。

更多详情请参见 Hendrik MakaitGH#8703

其他更改

2024.6.0

亮点

内存映射数组分词

现在,对 memmap 数组进行分词将避免将数组具体化到内存中。

更多详情请参见 Florian JetterGH#11161

其他更改

2024年5月2日

此版本主要包含一些小的错误修复。

其他更改

2024年5月1日

亮点

NumPy 2.0 支持

此版本包含针对即将发布的 NumPy 2.0 版本的兼容性更新。

更多详情请参见 Benjamin ZaitlenGH#11096James BourbeauGH#11106

增强的 Zarr 存储支持

此版本增加了对 MutableMapping 支持的 Zarr 存储,如 zarr.storage.DirectoryStore 等。

更多详情请参见 Greg M. FleishmanGH#10422

其他更改

2024.5.0

亮点

此版本主要包含一些小的错误修复。

其他更改

2024年4月2日

亮点

简单的合并实现

查询优化器将检查查询,以确定是否需要对 merge(...)groupby(...).apply(...) 进行洗牌。如果在之前的步骤中,DataFrame 已经在相同的列上进行了洗牌,并且中间没有任何操作改变分区布局或每个分区中的相关值,则可以避免洗牌。

>>> result = df.merge(df2, on="a")
>>> result = result.merge(df3, on="a")

查询优化器将识别到``result``之前已经在``”a”``上进行了洗牌,因此在第二次合并操作中仅对``df3``进行洗牌,然后再进行块级合并。

read_parquet 中的自动分区

如果从 Parquet 文件读取的单个分区太小,查询优化器将自动重新分区数据集。这将减少分区数量,从而也减少了任务图的大小。

优化器旨在生成至少75MB的分区,并在必要时将多个文件合并以达到此阈值。该值可以通过使用进行配置。

>>> dask.config.set({"dataframe.parquet.minimum-partition-size": 100_000_000})

该值以字节为单位给出。默认阈值相对保守,以避免工作节点上每个线程的内存量相对较小时出现内存问题。

其他更改

2024年4月1日

这是一个小型的错误修复版本,修复了在 Python 3.11.9 中导入 dask.dataframe 时的一个错误。

详情请参见 Richard (Rick) ZamoraGH#11035GH#11039

其他更改

2024.4.0

亮点

查询计划修复

此版本包含Dask DataFrame新查询计划器中的各种错误修复。

GPU 指标仪表板修复

GPU 内存和利用率仪表盘功能已恢复。之前这些图表无意中被留空。

详情请参见 Benjamin ZaitlenGH#8572

其他更改

2024年3月1日

这是一个小版本发布,主要是在升级时,如果未安装 dask-expr ,则将异常降级为警告。

其他更改

2024.3.0

发布于2024年3月11日

亮点

查询规划

此版本默认启用了 dask.dataframe 所有用户的查询计划功能。

查询规划功能代表了使用 dask-exprDataFrame 的重写。这是一个即插即用的替代方案,我们预计大多数用户不需要调整他们的代码。任何反馈可以在 Dask 的 问题追踪器 上报告,或者在 查询规划反馈问题 上提交。

如果你遇到任何问题,你仍然可以通过设置来选择退出。

>>> import dask
>>> dask.config.set({'dataframe.query-planning': False})

Pandas 1.X 支持的落日

新的查询规划后端至少需要 pandas 2.0 版本。如果你通过 conda 安装,或者使用 dask[complete]dask[dataframe] 从 pip 安装,pandas 版本将自动安装。

如果你在没有额外安装的情况下安装 dask,遗留的 DataFrame 实现仍然支持 pandas 1.X

其他更改

2024年2月1日

发布于2024年2月23日

亮点

允许静默 dask.DataFrame 弃用警告

上一个版本包含了一个 DeprecationWarning,它提醒用户即将切换 dask.dafaframe 以使用支持查询计划的新后端(另见 GH#10934)。

DeprecationWarning 在导入 dask.dataframe 模块时触发,社区对此过于冗长表示担忧。

现在可以静音此警告

# via Python
>>> dask.config.set({'dataframe.query-planning-warning': False})

# via CLI
dask config set dataframe.query-planning-warning False

详情请参见 MilesGH#10936GH#10925

更强大的分布式调度器,用于处理罕见的关键冲突

块级融合优化可能会导致任务键冲突,该冲突未被分布式调度器正确处理(参见 GH#9888)。用户通常会通过看到导致系统死锁或严重故障的各种内部异常来注意到这一点。虽然此问题无法修复,但调度器现在实现了一种机制,该机制应能缓解大多数情况,并在检测到问题时发出警告。

详情请参见 crusaderkyFlorian JetterGH#8185

在这过程中,tokenization 已经实施了各种改进。详情请参见 GH#10913, GH#10884, GH#10919, GH#10896 以及主要来自 crusaderkyGH#10883

在大规模集群上更强大的自适应缩放

自适应缩放在之前如果需要移动许多任务进行缩减时可能会丢失数据。这通常(但不限于)发生在大规模集群上,表现为任务的重新计算,并可能导致集群在扩展和缩减之间振荡而无法完成。

更多详情请参见 crusaderkyGH#8522

其他更改

2024.2.0

发布于2024年2月9日

亮点

弃用 Dask DataFrame 实现

当前的 Dask DataFrame 实现已被弃用。在未来的版本中,Dask DataFrame 将使用包含多项改进的新实现,包括逻辑查询计划。面向用户的 DataFrame API 将保持不变。

新的实现已经可用,可以通过安装 dask-expr 库来启用:

$ pip install dask-expr

并开启查询规划选项:

>>> import dask
>>> dask.config.set({'dataframe.query-planning': True})
>>> import dask.dataframe as dd

新实现的API文档可在 http://www.aidoczh.com/dask/en/stable/dataframe-api.html 获取

任何反馈都可以在 Dask 问题跟踪器 https://github.com/dask/dask/issues 上报告。

详情请参见 Patrick HoeflerGH#10912

改进的分词

此版本包含了对 Dask 对象令牌化逻辑的若干改进。现在更多对象生成确定性令牌,这可以通过缓存中间结果来提高性能。

详情请参见 crusaderkyGH#10898, GH#10904, GH#10876, GH#10874, 和 GH#10865

其他更改

2024年1月1日

发布于2024年1月26日

亮点

Pandas 2.2 和 Scipy 1.12 支持

此版本包含针对最新 pandasscipy 版本的兼容性更新。

详情请参见 crusaderkyGH#10834, GH#10849, GH#10845, 和 GH#8474

弃用

其他更改

2024.1.0

发布于2024年1月12日

亮点

P2P 中的部分重新分块

P2P 重新分块现在利用了输入和输出块之间的关系。对于不需要全对全数据传输的情况,这可能会显著减少运行时间和内存/磁盘占用。它还支持任务剔除。

详情请参见 Hendrik MakaitGH#8330

Fastparquet 引擎已弃用

fastparquet Parquet 引擎已被弃用。用户应通过 安装 PyArrow 并移除 read_parquetto_parquet 调用中的 engine="fastparquet" 来迁移到 pyarrow 引擎。

详情请参见 crusaderkyGH#10743

改进了对任意数据的序列化

此版本改进了对任意数据的序列化鲁棒性。之前在某些情况下,序列化非 msgpack 可序列化的数据时可能会失败。现在在这些情况下,我们改为使用 pickle

详情请参见 Hendrik MakaitGH#8447

额外的弃用

其他更改

2023.12.1

发布于2023年12月15日

亮点

逻辑查询计划现可用于 Dask DataFrames

Dask DataFrames 现在通过使用逻辑查询计划器性能得到了很大提升。此功能目前默认关闭,但可以通过以下方式开启:

dask.config.set({"dataframe.query-planning": True})

您还需要安装 dask-expr

pip install dask-expr

到目前为止,我们已经看到了有希望的性能提升,更多信息请参见 这篇博客文章这些定期更新的基准测试。关于查询优化器如何工作的更详细解释可以在 这篇博客文章 中找到。

此功能仍在积极开发中,API 尚未稳定,因此可能会发生重大变化。我们预计将在明年年初将查询优化器设为默认。

详情请参见 Patrick HoeflerGH#10634

read_parquet 中的Dtype推断

read_parquet 现在会将 Arrow 类型 pa.date32(), pa.date64()pa.decimal() 推断为 pandas 中的 ArrowDtype。这些数据类型由原始的 Arrow 数组支持,因此避免了转换为 NumPy 对象。此外,read_parquet 将不再将嵌套和二进制类型推断为字符串,它们将被存储在 NumPy 对象数组中。

详情请参见 Patrick HoeflerGH#10698GH#10705

调度改进以减少内存使用

此版本对调度逻辑的核心部分进行了重大重写。它包括在 dask.order 中对拓扑排序算法的新方法,该算法决定了任务的运行顺序。不当的排序被认为是导致集群内存压力过大的主要原因。

此版本更新修复了在 2023.10.0 版本中引入的一些性能退化问题(参见 GH#10535)。通常情况下,计算现在会更加积极地释放数据,如果这些数据不再需要在内存中保留的话。

详情请参见 Florian JetterGH#10660, GH#10697

改进的基于P2P的合并鲁棒性和性能

此版本包含多个更新,修复了2023.9.2版本中可能引入的死锁问题,并增强了集群动态扩展时基于P2P合并的鲁棒性。

详情请参见 Hendrik MakaitGH#8415, GH#8416, 和 GH#8414

已移除禁用 pickle 选项

distributed.scheduler.pickle 配置选项不再支持。自2023.4.0版本起,pickle 用于传输任务图,因此不能再被禁用。现在,当 distributed.scheduler.pickle 设置为 False 时,我们会引发一个信息性的错误。

详情请参见 Florian JetterGH#8401

其他更改

2023.12.0

发布于2023年12月1日

亮点

Pip安装 重启和环境变量

distributed.PipInstall 插件现在具有更强大的重启逻辑,并且还支持 环境变量

下面展示了用户如何使用 distributed.PipInstall 插件和一个 TOKEN 环境变量来安全地从私有仓库安装包:

from dask.distributed import PipInstall
plugin = PipInstall(packages=["private_package@git+https://${TOKEN}@github.com/dask/private_package.git])
client.register_plugin(plugin)

详情请参见 Hendrik MakaitGH#8374GH#8357GH#8343

Bokeh 3.3.0 兼容性

此版本包含与使用 bokeh>=3.3.0 和代理 Dask 仪表板的兼容性更新。以前,仪表板图表的内容不会显示。

详情请参见 Jacob TomlinsonGH#8347GH#8381

其他更改

2023.11.0

发布于2023年11月10日

亮点

零拷贝 P2P 数组重新分块

使用内存中P2P数组重新分块时,用户应看到显著的性能提升。这是由于不再复制底层数据缓冲区。

下面展示了一个简单的示例,我们比较了不同重新分块方法的性能。

shape = (30_000, 6_000, 150) # 201.17 GiB
input_chunks = (60, -1, -1) # 411.99 MiB
output_chunks = (-1, 6, -1) # 205.99 MiB

arr = da.random.random(size, chunks=input_chunks)
with dask.config.set({
    "array.rechunk.method": "p2p",
    "distributed.p2p.disk": True,
}):
    (
      da.random.random(size, chunks=input_chunks)
      .rechunk(output_chunks)
      .sum()
      .compute()
    )
不同方法之间重新分块性能的比较,包括不同集群规模下的任务、带磁盘的点对点和不带磁盘的点对点。图中显示,不带磁盘的点对点比基于默认任务的方法快60%。

详情请参见 crusaderkyGH#8282, GH#8318, GH#8321 以及 Hendrik Makait 的 (GH#8322)。

弃用 PyArrow <14.0.1

pyarrow<14.0.1 的使用从本版本开始已被弃用。建议所有用户升级他们的 pyarrow 版本或安装 pyarrow-hotfix。详情请参阅 此 CVE

详情请参见 Florian JetterGH#10622

改进了用于 Parquet 的 PyArrow 文件系统

在读取 Parquet 数据集时使用 filesystem="arrow" 现在可以正确推断访问远程云托管数据时的正确云区域。

详情请参见 Richard (Rick) ZamoraGH#10590

改进P2P混洗中的类型协调

详情请参见 Hendrik MakaitGH#8332

其他更改

2023.10.1

发布于2023年10月27日

亮点

Python 3.12

此版本正式添加了对 Python 3.12 的支持。

详情请参见 Thomas GraingerGH#10544GH#8223

其他更改

2023.10.0

发布于2023年10月13日

亮点

减少多数组缩减的内存压力

此版本包含了Dask任务图调度逻辑的主要更新。这些更新显著减少了数组缩减时的内存压力。我们预计这将对数组计算社区产生重大影响。

详情请参见 Florian JetterGH#10535

改进的P2P洗牌鲁棒性

有几个更新(如下所列)使得P2P洗牌更加健壮,更不容易失败。

详情请参见 Hendrik MakaitGH#8262, GH#8264, GH#8242, GH#8244, 和 GH#8235,以及 Charles Blackmon-LucaGH#8124

减少大型图的调度器CPU负载

在计算大型任务图时,用户应在其调度程序上看到降低的CPU负载。

详情请参见 Florian JetterGH#8238GH#10547 以及 crusaderkyGH#8240

其他更改

2023年9月3日

发布于2023年9月29日

亮点

恢复以前的配置覆盖行为

2023.9.2 版本在 dask.config.get 中使用 override_with= 关键字覆盖配置选项的方式上引入了一个非预期的重大变化(参见 GH#10519)。此版本恢复了之前的行为。

详情请参见 crusaderkyGH#10521

Dask 数组缩减中的复杂数据类型

此版本改进了在使用 Dask Array 中的常见归约操作(例如 varstdmoment)时对复杂数据类型的支持。

详情请参见 wkrasnickiGH#10009

其他更改

2023年9月2日

发布于2023年9月15日

亮点

当安装了过时的 PyArrow 时,P2P 混洗现在会引发错误

之前,如果安装了较旧版本的 pyarrow,默认的混洗方法会从点对点(P2P)混洗静默回退到基于任务的混洗。现在,我们会引发一个包含所需最低 pyarrow 版本的信息性错误,而不是静默回退。

详情请参见 Hendrik MakaitGH#10496

admin.traceback.shorten 的弃用周期

2023.9.0 版本在没有引入弃用周期的情况下修改了 admin.traceback.shorten 配置选项。这导致在某些情况下无法创建 Dask 集群。此版本为此配置更改引入了弃用周期。

详情请参见 crusaderkyGH#10509

其他更改

2023年9月1日

发布于2023年9月6日

备注

这是一个热修复版本,修复了2023.9.0版本中引入的P2P洗牌错误(参见 GH#10493)。

增强功能

Bug 修复

维护

2023.9.0

发布于2023年9月1日

Bug 修复

文档

维护

2023年8月1日

发布于2023年8月18日

增强功能

Bug 修复

  • 在追加模式下运行 to_csv 时,当 single_fileTrue 时修复 ValueError (GH#10441) Ben

维护

2023.8.0

发布于2023年8月4日

增强功能

文档

维护

2023年7月1日

发布于2023年7月20日

备注

此版本更新了 Dask DataFrame,如果安装了 pandas>=2pyarrow>=12,将自动将使用 object 数据类型的文本数据转换为 string[pyarrow]

这将显著减少处理文本数据的工作流中的内存消耗,并提高计算性能。

你可以通过将 dataframe.convert-string 配置值设置为 False 来禁用此更改。

dask.config.set({"dataframe.convert-string": False})

增强功能

Bug 修复

2023.7.0

发布于2023年7月7日

增强功能

Bug 修复

文档

维护

2023.6.1

发布于2023年6月26日

增强功能

Bug 修复

弃用

维护

2023.6.0

发布于2023年6月9日

增强功能

Bug 修复

文档

维护

2023年5月1日

发布于2023年5月26日

备注

此版本放弃了对 Python 3.8 的支持。自此版本起,Dask 支持 Python 3.9、3.10 和 3.11。更多详情请参见 此社区问题

增强功能

Bug 修复

文档

维护

2023.5.0

发布于2023年5月12日

增强功能

Bug 修复

文档

维护

2023年4月1日

发布于2023年4月28日

增强功能

Bug 修复

文档

维护

2023.4.0

发布于2023年4月14日

增强功能

Bug 修复

弃用

文档

维护

2023年3月2日

发布于2023年3月24日

增强功能

Bug 修复

文档

维护

2023年3月1日

发布于2023年3月10日

增强功能

Bug 修复

文档

维护

2023.3.0

发布于2023年3月1日

Bug 修复

文档

维护

2023年2月1日

发布于2023年2月24日

备注

此版本将默认的 DataFrame 洗牌算法更改为 p2p,以提高稳定性和性能。在此了解更多,并请在 此讨论 中提供任何反馈。

如果你在使用这个新算法时遇到问题,请参阅 文档 以获取更多信息,以及如何切换回旧模式。

增强功能

Bug 修复

文档

维护

2023.2.0

发布于2023年2月10日

增强功能

Bug 修复

文档

维护

2023年1月1日

发布于2023年1月27日

增强功能

Bug 修复

文档

维护

2023.1.0

发布于2023年1月13日

增强功能

文档

维护

2022.12.1

发布于2022年12月16日

增强功能

Bug 修复

文档

维护

2022.12.0

于2022年12月2日发布

增强功能

Bug 修复

维护

2022.11.1

发布于2022年11月18日

增强功能

维护

2022.11.0

发布于2022年11月15日

增强功能

Bug 修复

文档

维护

2022.10.2

发布于2022年10月31日

这是一个热修复,本仓库没有变化。必要的修复在 dask/distributed 中,但我们决定为了保持一致性而更新此版本号。

2022.10.1

发布于2022年10月28日

增强功能

Bug 修复

文档

维护

2022.10.0

发布于2022年10月14日

新功能

增强功能

Bug 修复

文档

维护

2022年9月2日

发布于2022年9月30日

增强功能

文档

维护

2022.9.1

发布于2022年9月16日

新功能

增强功能

Bug 修复

弃用

  • 允许 split_outNone,在 groupby().aggregate() 中默认为 1 (GH#9491) Ian Rose

文档

维护

2022.9.0

发布于2022年9月2日

增强功能

Bug 修复

文档

维护

2022年8月1日

发布于2022年8月19日

新功能

增强功能

Bug 修复

文档

维护

2022.8.0

发布于2022年8月5日

增强功能

Bug 修复

文档

维护

2022年7月1日

发布于2022年7月22日

增强功能

Bug 修复

文档

维护

2022.7.0

发布于2022年7月8日

增强功能

Bug 修复

文档

维护

2022年6月1日

发布于2022年6月24日

增强功能

Bug 修复

弃用

文档

维护

2022.6.0

发布于2022年6月10日

增强功能

Bug 修复

文档

维护

2022.05.2

发布于2022年5月26日

增强功能

文档

维护

2022.05.1

发布于2022年5月24日

新功能

增强功能

Bug 修复

弃用

文档

维护

2022.05.0

发布于2022年5月2日

亮点

这是针对 此问题 的错误修复版本。

文档

2022.04.2

发布于2022年4月29日

亮点

此版本包括对 dask.dataframe.read_parquetdask.dataframe.to_parquet 的几个弃用/破坏性API更改:

  • to_parquet 默认不再写入 _metadata 文件。如果你想写入一个 _metadata 文件,可以传入 write_metadata_file=True

  • read_parquet 现在默认使用 split_row_groups=False,这会导致在读取 parquet 数据集时,每个 parquet 文件对应一个 Dask 数据帧分区。如果你处理的是大型 parquet 文件,你可能需要设置 split_row_groups=True 来减少分区大小。

  • read_parquet 不再默认计算分区。如果你需要 read_parquet 返回带有已知分区的数据框,请设置 calculate_divisions=True

  • read_parquet 已弃用 gather_statistics 关键字参数。请改用 calculate_divisions 关键字参数。

  • read_parquet 已弃用 require_extensions 关键字参数。请改用 parquet_file_extension 关键字参数。

新功能

增强功能

Bug 修复

弃用

文档

维护

2022.04.1

发布于2022年4月15日

新功能

  • 添加缺失的 NumPy ufuncs:absleft_shiftright_shiftpositive。 (GH#8920) Tom White

增强功能

Bug 修复

弃用

文档

维护

2022.04.0

发布于2022年4月1日

备注

这是第一个支持 Python 3.10 的版本

新功能

增强功能

Bug 修复

弃用

文档

维护

2022.03.0

发布于2022年3月18日

新功能

增强功能

Bug 修复

弃用

文档

维护

2022.02.1

发布于2022年2月25日

新功能

  • dask.dataframe.pivot_table 中添加聚合函数 firstlast (GH#8649) Knut Nordanger

  • 为类似 pandas 的对象添加 datetime64 dtypestd() 支持 (GH#8523) Ben Glossner

  • 将物化任务计数添加到 HighLevelGraphLayer 的 html repr 中 (GH#8589) kori73

增强功能

Bug 修复

弃用

文档

维护

2022.02.0

发布于2022年2月11日

备注

这是支持 Python 3.7 的最后一个版本

新功能

增强功能

Bug 修复

弃用

文档

维护

2022.01.1

发布于2022年1月28日

新功能

增强功能

Bug 修复

弃用

文档

维护

2022.01.0

发布于 2022 年 1 月 14 日

新功能

增强功能

Bug 修复

弃用

文档

维护

2021.12.0

发布于2021年12月10日

新功能

增强功能

Bug 修复

弃用

文档

维护

2021.11.2

发布于2021年11月19日

2021.11.1

发布于2021年11月8日

补丁发布以将 distributed 依赖更新到版本 2021.11.1

2021.11.0

发布于2021年11月5日

2021.10.0

发布于2021年10月22日

2021.09.1

发布于2021年9月21日

2021.09.0

发布于2021年9月3日

2021.08.1

发布于2021年8月20日

2021年8月

发布于2021年8月13日

2021年7月2日

发布于2021年7月30日

备注

这是最后一个支持 NumPy 1.17 和 pandas 0.25 的版本。从下一个版本开始,NumPy 1.18 和 pandas 1.0 将成为最低支持版本。

2021.07.1

发布于2021年7月23日

2021年7月

发布于2021年7月9日

2021.06.2

发布于2021年6月22日

2021.06.1

发布于2021年6月18日

2021.06.0

发布于2021年6月4日

2021.05.1

发布于2021年5月28日

2021.05.0

发布于2021年5月14日

2021.04.1

发布于2021年4月23日

2021.04.0

发布于2021年4月2日

2021.03.1

发布于2021年3月26日

2021.03.0

发布于2021年3月5日

备注

这是第一个支持 Python 3.9 的版本,也是最后一个支持 Python 3.6 的版本。

2021年2月

发布于2021年2月5日

2021.01.1

发布于2021年1月22日

2021.01.0

发布于2021年1月15日

2020.12.0

发布于2020年12月10日

亮点

  • 切换到 CalVer 版本控制方案。

  • HighLevelGraph 引入了新的API,以支持将任务图的高级表示发送到分布式调度器。

  • 引入了新的 HighLevelGraph 层对象,包括 BasicLayerBlockwiseBlockwiseIOShuffleLayer 等。

  • 添加了对使用 dask.annotations 上下文管理器应用自定义 Layer 级别注释(如 priorityretries 等)的支持。

  • 将 pandas 的最低支持版本更新为 0.25.0,将 NumPy 的最低支持版本更新为 1.15.1。

  • pyarrow.dataset API 的支持,用于 read_parquet

  • 对 Dask Array 的 SVD 进行了多项修复。

所有更改

2.30.0 / 2020-10-06

数组

2.29.0 / 2020-10-02

数组

核心

DataFrame

文档

2.28.0 / 2020-09-25

数组

核心

DataFrame

2.27.0 / 2020-09-18

数组

核心

DataFrame

文档

2.26.0 / 2020-09-11

数组

核心

DataFrame

文档

2.25.0 / 2020-08-28

核心

DataFrame

文档

2.24.0 / 2020-08-22

数组

数据框

核心

2.23.0 / 2020-08-14

数组

核心

DataFrame

文档

2.22.0 / 2020-07-31

数组

核心

DataFrame

文档

2.21.0 / 2020-07-17

数组

核心

DataFrame

文档

2.20.0 / 2020-07-02

数组

DataFrame

文档

2.19.0 / 2020-06-19

数组

核心

DataFrame

文档

2.18.1 / 2020-06-09

数组

核心

文档

2.18.0 / 2020-06-05

数组

DataFrame

文档

2.17.2 / 2020-05-28

核心

DataFrame

2.17.1 / 2020-05-28

数组

核心

DataFrame

2.17.0 / 2020-05-26

数组

核心

DataFrame

文档

2.16.0 / 2020-05-08

数组

核心

DataFrame

文档

2.15.0 / 2020-04-24

数组

核心

DataFrame

文档

2.14.0 / 2020-04-03

数组

核心

DataFrame

文档

2.13.0 / 2020-03-25

数组

核心

DataFrame

文档

2.12.0 / 2020-03-06

数组

核心

DataFrame

文档

2.11.0 / 2020-02-19

数组

核心

DataFrame

文档

2.10.1 / 2020-01-30

2.10.0 / 2020-01-28

2.9.2 / 2020-01-16

数组

核心

DataFrame

文档

2.9.1 / 2019-12-27

数组

核心

DataFrame

文档

2.9.0 / 2019-12-06

数组

核心

DataFrame

文档

2.8.1 / 2019-11-22

数组

核心

DataFrame

文档

2.8.0 / 2019-11-14

数组

核心

DataFrame

文档

2.7.0 / 2019-11-08

此版本放弃了对 Python 3.5 的支持

数组

核心

DataFrame

文档

2.6.0 / 2019-10-15

核心

DataFrame

文档

2.5.2 / 2019-10-04

数组

DataFrame

文档

2.5.0 / 2019-09-27

核心

DataFrame

文档

2.4.0 / 2019-09-13

数组

核心

DataFrame

文档

2.3.0 / 2019-08-16

数组

核心

DataFrame

文档

2.2.0 / 2019-08-01

数组

核心

DataFrame

文档

2.1.0 / 2019-07-08

数组

核心

DataFrame

文档

2.0.0 / 2019-06-25

数组

核心

DataFrame

文档

1.2.2 / 2019-05-08

数组

核心

DataFrame

文档

1.2.1 / 2019-04-29

数组

核心

DataFrame

文档

1.2.0 / 2019-04-12

数组

核心

DataFrame

文档

1.1.5 / 2019-03-29

数组

核心

DataFrame

文档

1.1.4 / 2019-03-08

数组

核心

DataFrame

文档

1.1.3 / 2019-03-01

数组

DataFrame

文档

1.1.2 / 2019-02-25

数组

DataFrame

文档

核心

1.1.1 / 2019-01-31

数组

DataFrame

延迟

文档

核心

  • 解决 psutil 5.5.0 不允许对 Process 对象进行序列化的问题 Janne Vuorela

1.1.0 / 2019-01-18

数组

DataFrame

文档

核心

1.0.0 / 2018-11-28

数组

DataFrame

文档

核心

0.20.2 / 2018-11-15

数组

数据框

文档

0.20.1 / 2018-11-09

数组

核心

数据框

文档

0.20.0 / 2018-10-26

数组

核心

数据框

文档

0.19.4 / 2018-10-09

数组

数据框

核心

文档

0.19.3 / 2018-10-05

数组

数据框

核心

文档

0.19.2 / 2018-09-17

数组

核心

文档

0.19.1 / 2018-09-06

数组

数据框

文档

0.19.0 / 2018-08-29

数组

DataFrame

核心

文档

0.18.2 / 2018-07-23

数组

数据框

延迟

核心

0.18.1 / 2018-06-22

数组

DataFrame

核心

0.18.0 / 2018-06-14

数组

数据框

核心

0.17.5 / 2018-05-16

数组

DataFrame

0.17.4 / 2018-05-03

数据框

0.17.3 / 2018-05-02

数组

DataFrame

核心

  • 支持在持久化、可视化和优化中遍历集合 (GH#3410) Jim Crist

  • 添加 schedule= 关键字以进行计算和持久化。这取代了常见的 get= 关键字用法 (GH#3448) Matthew Rocklin

0.17.2 / 2018-03-21

数组

DataFrame

核心

  • 修复了在使用意外但可哈希类型作为键时的错误 (GH#3238) Daniel Collins

  • 修复任务排序中的错误,以便我们使用键名一致地打破平局 (GH#3271) Matthew Rocklin

  • 当任务数量非常大时,避免按顺序排序任务(GH#3298)`Matthew Rocklin`_

0.17.1 / 2018-02-22

数组

DataFrame

核心

0.17.0 / 2018-02-09

数组

DataFrame

  • 文档 bag.map_paritions 函数可以接收列表或生成器。(GH#3150) Nir

核心

0.16.1 / 2018-01-09

数组

DataFrame

核心

0.16.0 / 2017-11-17

这是一个重大发布。它包括破坏性变更、新协议以及大量错误修复。

数组

DataFrame

核心

0.15.4 / 2017-10-06

数组

  • da.random.choice 现在支持数组参数 (GH#2781)

  • 支持使用 np.int 对数组进行索引(修复回归问题)(GH#2719)

  • 通过重新分块处理零维度 (GH#2747)

  • chunks 中支持 -1 作为“维度大小”的别名 (GH#2749)

  • 在 array.to_npy_stack 中调用 mkdir (GH#2709)

DataFrame

  • 为具有字符串类别的分类添加了 .str 访问器 (GH#2743)

  • 在 parquet 写入器中支持 int96 (spark) 日期时间 (GH#2711)

  • 将文件方案传递给 fastparquet (GH#2714)

  • 支持 Pandas 0.21 (GH#2737)

  • 为 foldby 添加树形缩减支持 (GH#2710)

核心

  • pip install dask[complete] 中移除 s3fs (GH#2750)

0.15.3 / 2017-09-24

数组

  • 添加掩码数组 (GH#2301)

  • 添加 *_like 数组创建函数 (GH#2640)

  • 使用无符号整数数组进行索引 (GH#2647)

  • 使用不同维度的布尔数组进行改进的切片 (GH#2658)

  • topatop 中支持字面量 (GH#2661)

  • 累积函数中的可选轴参数 (GH#2664)

  • 使用 assert_eq 改进标量测试 (GH#2681)

  • 修复 norm keepdims (GH#2683)

  • 添加 ptp (GH#2691)

  • 添加 apply_along_axis (GH#2690) 和 apply_over_axes (GH#2702)

DataFrame

  • 添加了 Series.str[index] (GH#2634)

  • 允许 groupby by 参数处理列和索引级别 (GH#2636)

  • DataFrame.to_csvBag.to_textfiles 现在返回文件名

    他们已经写的内容 (GH#2655)

  • 修复 to_parquetpartition_onappend 的组合问题 (GH#2645)

  • 修复parquet文件方案 (GH#2667)

  • Repartition 适用于混合分类数据 (GH#2676)

核心

  • python setup.py test 现在运行测试 (GH#2641)

  • 新增了新的备忘单 (GH#2649)

  • 在Bokeh图中移除调整大小工具 (GH#2688)

0.15.2 / 2017-08-25

数组

  • 移除已弃用的 Bag 行为 (GH#2525)

DataFrame

  • 在分配中支持可调用对象 (GH#2513)

  • 为 read_csv 提供更好的错误信息 (GH#2522)

  • 添加 dd.to_timedelta (GH#2523)

  • 验证 from_delayed 中的元数据 (GH#2534) (GH#2591)

  • 添加 DataFrame.isin (GH#2558)

  • Read_hdf 支持文件的可迭代对象 (GH#2547)

核心

  • 移除所有地方的裸 except: 块 (GH#2590)

0.15.1 / 2017-07-08

  • 为 to_textfiles 和 to_csv 添加 storage_options (GH#2466)

  • 重新分块并简化 rfftfreq (GH#2473), (GH#2475)

  • 更好地支持 ndarray 子类 (GH#2486)

  • dask.distributed 中的导入星号 (GH#2503)

  • 使用令牌化的线程安全缓存处理 (GH#2511)

0.15.0 / 2017-06-09

数组

  • 修复了在没有任何分区的包上进行归约操作时会失败的错误 (GH#2324)

  • 添加广播和可变参数 db.map 顶级函数。同时移除元组作为映射参数时的自动展开 (GH#2339)

  • Bag.concat 重命名为 Bag.flatten (GH#2402)

DataFrame

核心

  • 将 dask.async 模块移动到 dask.local (GH#2318)

  • 支持嵌套调度器调用的回调 (GH#2397)

  • 支持将 pathlib.Path 对象作为 uris (GH#2310)

0.14.3 / 2017-05-05

DataFrame

  • Pandas 0.20.0 支持

0.14.2 / 2017-05-03

数组

  • 添加 da.indices (GH#2268), da.tile (GH#2153), da.roll (GH#2135)

  • 在 da.map_blocks 中同时支持 drop_axis 和 new_axis (GH#2264)

  • 重新分块和连接工作与未知的块大小 (GH#2235) 和 (GH#2251)

  • 支持非numpy容器数组,特别是稀疏数组 (GH#2234)

  • Tensordot 对多个轴进行收缩 (GH#2186)

  • 在 da.store 中允许延迟目标 (GH#2181)

  • 支持对列表和元组的交互 (GH#2148)

  • 用于调试的构造器插件 (GH#2142)

  • 多维FFT(单块)(GH#2116)

  • to_dataframe 强制类型一致 (GH#2199)

DataFrame

  • Set_index 总是完全排序索引 (GH#2290)

  • 支持与 pandas 0.20.0 的兼容性 (GH#2249), (GH#2248), 和 (GH#2246)

  • 支持 Arrow Parquet 读取器 (GH#2223)

  • 基于时间的滚动窗口 (GH#2198)

  • Repartition 现在可以创建更多分区,而不仅仅是减少分区 (GH#2168)

核心

0.14.1 / 2017-03-22

数组

  • 微优化优化 (GH#2058)

  • 更改切片优化以避免融合原始 numpy 数组 (GH#2075) (GH#2080)

  • Dask.array 操作现在可以在 numpy 数组上工作 (GH#2079)

  • Reshape 现在可以在更广泛的案例中工作 (GH#2089)

  • 支持深拷贝 Python 协议 (GH#2090)

  • 允许在 da.fft 中使用用户提供的 FFT 实现 (GH#2093)

DataFrame

  • 修复空分区下的 to_parquet 问题 (GH#2020)

  • set_index 中可选的 npartitions='auto' 模式 (GH#2025)

  • 优化洗牌性能 (GH#2032)

  • 支持沿时间窗口高效重新分区,如 repartition(freq='12h') (GH#2059)

  • 提高分类速度 (GH#2010)

  • 支持单行数据帧算术运算 (GH#2085)

  • 在设置索引时自动避免对已排序的列进行洗牌 (GH#2091)

  • 改进 read_csv 中对整数 NA 处理的机制 (GH#2098)

延迟

  • 延迟对象上的重复属性访问使用相同的键 (GH#2084)

核心

  • 改进dot可视化中节点的命名,以避免使用通用的 apply (GH#2070)

  • 确保工作进程具有不同的随机种子 (GH#2094)

0.14.0 / 2017-02-24

数组

DataFrame

  • 支持非均匀分类 (GH#1877), (GH#1930)

  • 分组累积缩减 (GH#1909)

  • DataFrame.loc 索引现在支持列表 (GH#1913)

  • 改进多级分组 (GH#1914)

  • 改进了 DataFrame 的 HTML 和字符串表示 (GH#1637)

  • Parquet 追加 (GH#1940)

  • 添加 dd.demo.daily_stock 函数用于教学 (GH#1992)

延迟

  • 在 delayed 中添加 traverse= 关键字,以选择性地避免遍历嵌套数据结构 (GH#1899)

  • 在 from_delayed 函数中支持 Futures (GH#1961)

  • 改进装饰延迟函数的序列化 (GH#1969)

核心

  • 改进在边缘情况下的Windows路径解析 (GH#1910)

  • 融合时重命名任务 (GH#1919)

  • 添加顶级 persist 函数 (GH#1927)

  • 在字节处理中传播 errors= 关键字 (GH#1954)

  • Dask.compute 遍历 Python 集合 (GH#1975)

  • dask.array 和 dask.delayed 中图之间的结构共享 (GH#1985)

0.13.0 / 2017-01-02

数组

  • dask.array 上的强制数据类型。所有操作都保持数据类型信息,并且像 map_blocks 这样的 UDF 函数现在如果无法推断数据类型,则需要一个 dtype= 关键字。 (GH#1755)

  • 支持形状未知的数组,例如在使用数组切片数组或将数据框转换为数组时产生的情况 (GH#1838)

  • 通过设置一个数组为另一个数组来支持变异(GH#1840

  • 协方差和相关性的树形约简。 (GH#1758

  • 添加 SerializableLock 以更好地与分布式调度一起使用 (GH#1766)

  • 改进了atop支持 (GH#1800)

  • 重新分块优化 (GH#1737), (GH#1827)

  • 在重新计算同一组时避免错误结果 (GH#1867)

DataFrame

延迟

  • delayed(nout=0)delayed(nout=1) 的行为已更改:delayed(nout=1) 不再默认 out=None,并且 delayed(nout=0) 也已启用。即,返回长度为1或0的元组的函数可以被正确处理。这对于包装具有可变数量输出的函数特别方便。例如,一个简单的例子:delayed(lambda *args: args, nout=len(vals))(*vals)

核心

0.12.0 / 2016-11-03

DataFrame

  • 当传递给 dataframe.map_partitions 的函数返回标量时返回一个序列 (GH#1515)

  • 修复序列的类型大小推断 (GH#1513)

  • dataframe.DataFrame.categorize 不再在 categories 中包含缺失值。这是为了与 pandas 的更改 (GH#1565) 兼容。

  • 修复 dataframe.read_csv 中头部解析器错误,当某些行有引号时 (GH#1495)

  • 添加 dataframe.reductionseries.reduction 方法,以对数据框和序列应用通用的行级归约 (GH#1483)

  • 添加 dataframe.select_dtypes,该方法镜像了 pandas 方法 (GH#1556)

  • dataframe.read_hdf 现在支持读取 Series (GH#1564)

  • 支持 Pandas 0.19.0 (GH#1540)

  • 实现 select_dtypes (GH#1556)

  • 字符串访问器使用索引 (GH#1561)

  • 为 dask.dataframe 添加管道方法 (GH#1567)

  • 添加 indicator 关键字到合并 (GH#1575)

  • read_hdf 中支持 Series (GH#1575)

  • 支持包含缺失值的分类 (GH#1578)

  • 支持像 df.x += 1 这样的就地操作符 (GH#1585)

  • Str 访问器传递 args 和 kwargs (GH#1621)

  • 改进了单机多进程调度器的 groupby 支持 (GH#1625)

  • 树形缩减 (GH#1663)

  • 数据透视表 (GH#1665)

  • 添加 clip (GH#1667)、align (GH#1668)、combine_first (GH#1725) 和 any/all (GH#1724)

  • 改进了 dask-pandas 合并中的分区处理 (GH#1666)

  • 添加 groupby.aggregate 方法 (GH#1678)

  • 添加 dd.read_table 函数 (GH#1682)

  • 改进对多级列的支持 (GH#1697) (GH#1712)

  • loc 中支持二维索引 (GH#1726)

  • 扩展 resample 以包含 DataFrame (GH#1741)

  • 在 dask.dataframe 对象上支持 dask.array ufuncs (GH#1669)

数组

  • 添加关于 dask.array chunks 参数如何工作的信息 (GH#1504)

  • 修复 dask.array 中非标量字段的字段访问 (GH#1484)

  • 在atop中添加concatenate=关键字以连接缩减维度后的块

  • 优化切片性能 (GH#1539) (GH#1731)

  • 扩展 atop 功能,增加 concatenate= (GH#1609)、new_axes= (GH#1612) 和 adjust_chunks= (GH#1716) 关键字

  • 添加 clip (GH#1610) swapaxes (GH#1611) round (GH#1708) repeat

  • atop 支持的操作中自动对齐块 (GH#1644)

  • 在切片时剔除 dask.arrays (GH#1709)

  • 修复 bag.from_sequence 中可调用对象被解释为任务的问题 (GH#1491)

  • 避免在归约中使用非惰性内存 (GH#1747)

管理

  • 添加了变更日志 (GH#1526)

  • 从线程操作时创建新的线程池 (GH#1487)

  • 将示例文档页面统一为一个 (GH#1520)

  • 为基于git提交的版本添加versioneer (GH#1569)

  • 在dot可视化中传递node_attr和edge_attr关键字 (GH#1614)

  • 使用 Appveyor 为 Windows 添加持续测试 (GH#1648)

  • 移除对 multiprocessing.Manager 的使用 (GH#1653)

  • 添加全局优化关键字以进行计算(GH#1675

  • 微优化 get_dependencies (GH#1722)

0.11.0 / 2016-08-24

主要观点

现在,DataFrames 在任何地方都强制要求了解完整的元数据(列、数据类型)。以前,当函数丢失数据类型信息(如 apply)时,我们会处于一种模糊状态。现在,所有数据框始终知道它们的数据类型,并且在无法推断时会引发错误,要求提供信息(通常它们可以推断)。一些内部属性,如 _pd_pd_nonempty 已被移动。

分布式调度器的内部结构已重构,以在显式状态之间转换任务。这提高了弹性、调度推理、插件操作和日志记录。同时,这也使得新来者更容易理解调度器代码。

重大变更

  • distributed.s3distributed.hdfs 命名空间已不存在。请改用 read_text('s3://...' 等常规方法中的协议。

  • Dask.array.reshape 现在在某些情况下会报错,而以前它会创建大量任务。

0.10.2 / 2016-07-27

  • 更多的 DataFrame 洗牌操作现在可以在分布式环境中工作,包括设置索引、哈希连接、排序连接和分组操作。

  • 当在Python的优化-OO模式下运行时,Dask通过了完整的测试套件。

  • 在某些高度并发的情境下,尤其是在Windows系统上,磁盘洗牌操作被发现会产生错误的结果。这一问题已通过修复partd库得到了解决。

  • 修复了在大数据通信下发生的文件描述符增长问题

  • --bokeh-whitelist 选项中支持端口,以便在复杂的网络设置下更好地路由web界面消息

  • 对工作节点故障的恢复能力有所改进(尽管其他已知故障仍然存在)

  • 你现在可以在任何工作节点上启动一个 IPython 内核,以改进调试和分析

  • dask.dataframe.read_hdf 的改进,特别是在从多个文件读取和文档方面

0.10.0 / 2016-06-13

重大变化

  • 此版本放弃了对 Python 2.6 的支持

  • Conda 包是从 conda-forge 构建并提供的

  • dask.distributed 的可执行文件已从 dfoo 重命名为 dask-foo。例如,dscheduler 已重命名为 dask-scheduler。

  • Bag 和 DataFrame 都包含一个初步的分布式洗牌。

  • 为分布式分组添加基于任务的洗牌

  • 添加累积以进行累积归约

DataFrame

  • 添加一个适合分布式连接、分组应用和设置索引操作的任务型洗牌。单机洗牌保持不变(并且效率更高。)

  • 添加对新的 Pandas rolling API 的支持,提升分布式系统上的通信性能。

  • 添加 groupby.std/var

  • read_csv 中传递 S3/HDFS 存储选项

  • 改进分类分区

  • 为数据框添加 eval、info、isnull、notnull 功能

分布式

  • 将可执行文件如 dscheduler 重命名为 dask-scheduler

  • 在多快速任务情况下提高调度器性能(对洗牌操作很重要)

  • 改进工作窃取机制,使其能够感知预期函数运行时间和数据大小。这大大增加了可以在分布式调度器上高效运行的算法的广度,而无需用户具备显著的专业知识。

  • 在流式队列中支持最大缓冲区大小

  • 在使用 Bokeh 诊断网页界面时改进 Windows 支持

  • 支持在协议中压缩非常大的字节字符串

  • 支持在 Joblib 接口中取消已提交的 futures 的清理操作

其他

  • 所有与dask相关的项目(dask、distributed、s3fs、hdfs、partd)现在都在conda-forge上构建conda包。

  • 在 s3fs 中更改凭证处理,仅在明确给出密钥/密钥时传递委托凭证。现在默认依赖于托管环境。可以通过明确提供关键字参数来更改回原来的设置。如果需要匿名模式,必须明确声明。

0.9.0 / 2016-05-11

API 变更

  • dask.dodask.value 已重命名为 dask.delayed

  • dask.bag.from_filenames 已重命名为 dask.bag.read_text

  • 所有S3/HDFS数据摄取功能,如 db.from_s3distributed.s3.read_csv ,都已移至普通的 read_textread_csv 函数中,这些函数现在支持协议,如 dd.read_csv('s3://bucket/keys*.csv')

数组

  • 添加对 scipy.LinearOperator 的支持

  • 改进对磁盘数据结构的选配锁定

  • 更改 rechunk 以暴露中间块

  • from_filename 重命名为 read_text

  • 移除 from_s3 以支持 read_text('s3://...')

DataFrame

  • 修复了相关性和协方差的数值稳定性问题

  • 允许无哈希 from_pandas 以实现快速往返于 pandas 对象

  • 通常重新设计了 read_csv 以更符合 Pandas 的行为

  • 支持对已排序列的快速 set_index 操作

延迟

  • do/value 重命名为 delayed

  • to/from_imperative 重命名为 to/from_delayed

分布式

  • 将 s3 和 hdfs 功能移入 dask 仓库

  • 自适应地为非常快的任务超额订阅工作者

  • 改进 PyPy 支持

  • 改进不平衡工作者的任务窃取

  • 使用树散点图高效分散数据

其他

  • 添加 lzma/xz 压缩支持

  • 当尝试分割不可分割的压缩类型(如gzip或bz2)时,发出警告。

  • 改进单机洗牌操作的哈希算法

  • 为开始状态添加新的回调方法

  • 性能调优概述

0.8.1 / 2016-03-11

数组

  • 修复了可能导致周期性结果不正确的范围切片错误。

  • 改进了 arg 归约(如 argminargmax 等)的支持和弹性。

  • 添加 zip 函数

DataFrame

  • 添加 corrcov 函数

  • 添加 melt 函数

  • 修复了io到bcolz和hdf5的错误

0.8.0 / 2016-02-20

数组

  • 将默认数组归约拆分从32更改为4

  • 线性代数, tril, triu, LU, inv, cholesky, solve, solve_triangular, eye, lstsq, diag, corrcoef.

  • 添加树形简化

  • 添加范围函数

  • 删除 from_hdfs 函数(现在 hdfs3 和 distributed 项目中已有更好的功能)

DataFrame

  • 重构 dask.dataframe 以包含一个完全空的 pandas dataframe 作为元数据。删除 Series 上的 .columns 属性

  • 添加 Series 分类访问器,series.nunique,删除 Series 的 .columns 属性。

  • read_csv 修复(多列 parse_dates、整数列名等)

  • 内部更改以改进图形序列化

其他

  • 文档更新

  • 为所有集合添加 from_imperative 和 to_imperative 函数

  • 对分析器图表的美观性更改

  • 将 dask 项目移至新的 dask 组织

0.7.6 / 2016-01-05

数组

  • 提高线程安全性

  • 树的归约

  • 添加 viewcompresshstackdstackvstack 方法

  • map_blocks 现在可以移除和添加维度

DataFrame

  • 提高线程安全性

  • 扩展采样以包括替换选项

命令式

  • 移除了融合结果的优化过程。

核心

  • 移除了 dask.distributed

  • 改进了阻塞文件读取的性能

  • 序列化改进

  • 测试 Python 3.5

0.7.4 / 2015-10-23

这主要是一个修复错误的版本。一些值得注意的变化:

  • 修复与numpy 1.10和pandas 0.17发布相关的小错误

  • 修复了一个随机数生成中的错误,该错误由于生日悖论会导致重复块。

  • 默认情况下在 dask.dataframe.read_hdf 中使用锁以避免并发问题

  • dask.get 默认指向 dask.async.get_sync

  • 允许可视化函数接受像 rankdir=’LR’ 这样的通用 graphviz 图选项

  • 将 reshape 和 ravel 添加到 dask.array

  • 支持从 dask.imperative 对象创建 dask.arrays

弃用

此版本还包括对 dask.distributed 的弃用警告,该功能将在下一个版本中移除。

dask 在分布式计算方面的未来发展正在这里进行:https://distributed.dask.org 。该项目非常欢迎来自社区的总体反馈。

0.7.3 / 2015-09-25

诊断

  • dask.diagnostics 模块中添加了一个用于分析内存和CPU使用情况的工具。

DataFrame

此版本改进了 pandas API 的覆盖范围。其中包括 nuniquenlargestquantile 等功能。修复了读取非 ASCII csv 文件时的编码问题。改进了重采样的性能和修复了相关错误。使用 globbing 更灵活地读取 HDF 文件。以及更多其他改进。修复了 dask.imperativedask.bag 中的各种错误。

0.7.0 / 2015-08-15

DataFrame

此版本包含重要的错误修复,并与 Pandas API 保持一致。这一成果既来自于使用,也来自于 Pandas 核心开发者的近期参与。

  • 新操作:查询、滚动操作、删除

  • 改进的操作:分位数、对整个数据框的算术运算、删除缺失值、构造逻辑、合并/连接、逐元素操作、分组聚合

  • 修复了折叠功能中的一个错误,该错误在默认参数为空时出现。

数组

  • 新操作:da.fft 模块,da.image.imread

基础设施

  • 数组和数据帧集合创建具有确定性键的图表。这些键通常较长(哈希字符串),但在计算之间应保持一致。这在未来将有助于缓存。

  • 所有集合(数组、包、数据框)都继承自公共子类

0.6.1 / 2015-07-23

分布式

  • 改进了(尽管还不够充分)``dask.distributed`` 在工作者死亡时的恢复能力

DataFrame

  • 改进的写作到各种格式,包括 to_hdf、to_castra 和 to_csv

  • 改进了从 dask 数组和包创建 dask DataFrame 的过程

  • 改进了对分类数据的支持以及各种其他方法

数组

  • 各种错误修复

  • 直方图函数

调度

  • 在并行工作负载中添加了任务的打破平局排序,以更好地处理和清除中间结果

其他

  • 添加了 dask.do 函数,用于使用普通 Python 代码显式构建图

  • 将 pydot 替换为 graphviz 库以支持 Python3 的图形打印

  • 还有一个 gitter 聊天室和一个 stackoverflow 标签