我正在尝试确定使用dask.bag
函数实例化时from_sequence
是否保留顺序。
我从其他问题中看到,bag
(例如Dask Bag read_text() line order)的排序不能保证,但是我不清楚为什么。
除了对复杂的数据结构进行测试之外,我还运行了以下简单测试。在这两种情况下,似乎都保留了排序。只是不确定我是否需要做更多的事情,例如,使用zip
来获取格式为(索引,对象)的元组列表,然后使我的bag
成为其中的一个,因此我可以按索引排序应用compute
之后。
from dask import bag as db
b = db.from_sequence([1,2,3,4,5])
sqr = lambda i: i**2
list(b.map(sqr))
[1, 4, 9, 16, 25]
预期结果是
list(b.map(sqr)) == [i**2 for i in [1,2,3,4,5]]
返回True
答案 0 :(得分:1)
在我看来,链接答案中的答案很清楚:是的,订单被保留了,但这不能保证将来。我希望from_sequence在传递具有固有顺序的内容(而不是在一个文件或一组文件中随机访问)时成为最有可能保持顺序的之一。您可以估算每个要处理的项目一次。当然,在有分区和并行处理的地方,不能确定何时实际处理每个项目。