Почему dask.bag.Bag.take (3) возвращает только одно значение? - PullRequest
1 голос
/ 14 июля 2020

Этот пример взят прямо из документации здесь: https://docs.dask.org/en/latest/bag-api.html#dask .bag.Bag.take

from dask.bag import from_sequence
b = from_sequence(range(10))
b.take(3)

Предполагается напечатать

(0,1,2)

Но для меня он печатает

(0,)

Это с dask 2.20.0 и python 3.8.

b.compute() печатает [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], как и следовало ожидать. Я только изучаю dask, и такое поведение take(3) кажется очень странным.

1 Ответ

1 голос
/ 14 июля 2020

Мне кажется, что есть проблема с документацией. Согласно документам «, если в первом npartitions меньше, чем k строк, будет выдано предупреждение, и все найденные строки вернут », но в этом случае предупреждение не возвращается.

from dask.bag import from_sequence
b = from_sequence(range(10))

Если вы print(b) возвращает

dask.bag<from_se..., npartitions=10>

Итак, у вас 10 разделов, и, согласно документам, b.take(3) должен возвращать (0,) и предупреждение. Если вы перераспределите сумку как b = b.repartition(2), тогда b.take(3) вернет (0, 1, 2).

Обновить Как я уже сказал, это была проблема в документации. Это было исправлено здесь .

...