dask.bag.from_sequence是否保留顺序?

时间:2019-05-16 22:31:15

标签: dask

我正在尝试确定使用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

1 个答案:

答案 0 :(得分:1)

在我看来,链接答案中的答案很清楚:是的,订单被保留了,但这不能保证将来。我希望from_sequence在传递具有固有顺序的内容(而不是在一个文件或一组文件中随机访问)时成为最有可能保持顺序的之一。您可以估算每个要处理的项目一次。当然,在有分区和并行处理的地方,不能确定何时实际处理每个项目。