Apache Spark 分区

Apache Spark partitioning

我有这个问题:

如果我执行分区然后执行诸如 reduce/fold,是不是表示分区取消了,我会 必须在操​​作后重新分区以获得更好的性能?

Spark 中的操作 return

  • Nothing(None 在 PySpark 中,void 在 Java 中,Unit 在 Scala 中)用于纯粹用于副作用的操作,如 foreach.

  • 用于其他操作的本地非分布式对象。

同时,操作不会影响不可变对象或被调用的对象(缓存、检查点、缓存随机文件和计算统计数据可能产生的副作用除外)。

因此分区在这里并不是真正有意义的概念。

结果不是 Spark 分布式数据结构,因此分区不适用,源未修改(并且是描述,而不是容器)。

数据分区后,分区将由 Spark 维护以供进一步处理,包括 transformation/actions 除非您进行修复或合并。

创建分区后,每个执行器将分配任务给运行 transformation/action 在其分配到的分区的阶段中,分区(更新)从一个阶段移动到任何 transformations/actions

的另一个阶段