使用 dask 时如何避免使用 `Bag.take(n)` 产生空结果?

How to avoid an empty result with `Bag.take(n)` when using dask?

上下文: Dask 文档明确指出 Bag.take() 只会从第一个分区收集数据。但是,当使用过滤器时,可能会出现第一个分区为空而其他分区不是的情况。

问题: 是否可以使用 Bag.take() 以便它从足够数量的分区中收集以收集 n 项目(或最大可用小于 n)。

您可以执行以下操作:

from toolz import take
f = lambda seq: list(take(n, seq))
b.reduction(f, f)

这会抓取每个分区的前n个元素,将它们全部收集在一起,然后取结果的前n个元素。