Apache Spark 不确定性的来源

Sources of non-determinism of Apache Spark

我正在尝试找出 Spark 中所有不确定性的来源。我知道不确定性可能来自用户提供的函数,例如在 map(f) 中,f 涉及随机。相反,我正在寻找可能导致非确定性的操作,无论是在 transformations/actions 还是在较低级别,例如洗牌。

超出我的想象:

  • 需要洗牌(或一般的网络流量)的操作可能会以不确定的顺序输出值。它包括明显的情况,例如 groupBy*join。一个不太明显的例子是排序后的领带顺序

  • 依赖于不断变化的数据源或可变全局状态的操作

  • 在转换中执行的副作用,包括 accumulator 更新