Dask Bags 到 return Dask Bags 可以吗?
Is it ok for Dask Bags to return Dask Bags?
dask.bag
到 return/concat 其他袋子是否符合犹太洁食标准?
有什么优点/缺点吗?
举个简单的例子:
import dask.bag as bag
bg = (bag.from_sequence(['a', 'b', 'c'])
.map(lambda letter: bag.from_sequence([f'{letter} - 1',
f'{letter} - 2']))
.fold(lambda x, y: bag.concat((x, y)))
.compute())
bg.compute()
>>> ['a - 1', 'a - 2', 'b - 1', 'b - 2', 'c - 1', 'c - 2']
我能想到的一些陷阱:
- 需要调用
compute(scheduler='synchronous')
个嵌套包...
- 我在上面的例子中调用了两次计算,这很尴尬。
对优点有什么想法吗?
这绝对是一个 anti-pattern - 显然,您至少会在非常不同的 size-scales 上处理分区。您还会在内部计算上遇到瓶颈。通常,Dask 集合旨在处理核心数据类型,对于 bag 来说,这意味着您使用正常的 iterator/toolz 操作(bag API 主要是从中复制的)。
dask.bag
到 return/concat 其他袋子是否符合犹太洁食标准?
有什么优点/缺点吗?
举个简单的例子:
import dask.bag as bag
bg = (bag.from_sequence(['a', 'b', 'c'])
.map(lambda letter: bag.from_sequence([f'{letter} - 1',
f'{letter} - 2']))
.fold(lambda x, y: bag.concat((x, y)))
.compute())
bg.compute()
>>> ['a - 1', 'a - 2', 'b - 1', 'b - 2', 'c - 1', 'c - 2']
我能想到的一些陷阱:
- 需要调用
compute(scheduler='synchronous')
个嵌套包... - 我在上面的例子中调用了两次计算,这很尴尬。
对优点有什么想法吗?
这绝对是一个 anti-pattern - 显然,您至少会在非常不同的 size-scales 上处理分区。您还会在内部计算上遇到瓶颈。通常,Dask 集合旨在处理核心数据类型,对于 bag 来说,这意味着您使用正常的 iterator/toolz 操作(bag API 主要是从中复制的)。