我的 Spark 作业包含一系列 map 操作
JavaRDD<Row> rowRDD = raw
.javaRDD()
.mapPartitions(new CustomPartitionMapper())
.map(new DataSpecialMapper(config))
.map(new CsvFormatMapper(config))
.map(new ReportCounters());
从编程的角度来看,代码更具可读性和可测试性。 问题是关于性能。
映射器链是否会被 Spark 解释为一个映射器操作,并且是否会在同一个执行器中执行?如果不是,性能影响可能是什么?
谢谢
最佳答案
Will be the chain of mappers interpreted by Spark as one mapper operation and will be performed in the same executor or not?
Spark 会将多个窄转换优化为单个 stage,这意味着多个 map
任务将在同一任务伞下随后运行。 (参见 this blog post for more)
但是,您仍然要将这些分区中的每一个迭代 4 * O(n) 次,这仍然是 O(n),但在给定的输入大小下可能会影响性能,这一点始终要牢记。
关于java - Spark 性能中的 map 操作链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41618447/