Spark性能中的映射操作链



我的Spark作业包含一系列映射操作

JavaRDD<Row> rowRDD = raw
.javaRDD()
.mapPartitions(new CustomPartitionMapper())
.map(new DataSpecialMapper(config))
.map(new CsvFormatMapper(config))
.map(new ReportCounters());

从编程的角度来看,代码更具可读性和可测试性。问题在于表现。

Spark是否会将映射器链解释为一个映射器操作,并在同一执行器中执行?如果没有,可能会对性能产生什么影响?

感谢

将是Spark解释为一个映射器的映射器链操作,是否将在同一执行器中执行?

Spark将优化多个狭窄的转换,使其成为一个阶段,这意味着多个map任务随后将在同一任务保护伞下运行。(请参阅此博客文章了解更多信息)

但是,您仍将对这些分区中的每一个进行4*O(n)次迭代,这仍然是0(n),但可能在给定的输入大小下影响性能,这始终是需要记住的。

最新更新