我可以在 PySpark 中安全地使用 RDD.aggregate 中的可变对象吗?

Can I safely use mutable objects in RDD.aggregate in PySpark?

我正在为 PySpark 命令 RDD.aggregate 编写函数,它需要以下参数:aggregate(zeroValue, seqOp, combOp).

我可以为这些参数中的 所有 使用可变对象,而不会弄乱逻辑吗?

基本上为了效率我希望调用类似

的东西

所有方法都会return self。这样我就不用重新分配对象了。

是的,您可以使用可变对象作为 fold(ByKey)aggregate(ByKey) 等方法的聚合缓冲区,因为它在文档字符串中有明确说明:

The functions op(t1, t2) is allowed to modify t1 and return it as its result value to avoid object allocation; however, it should not modify t2.

缓冲区(zeroValue)每个任务初始化一次,因此可以安全地进行变异。