java - Spark 性能中的 map 操作链

标签 java performance apache-spark

我的 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/

相关文章:

java - 记录不带正文但包含路径和查询参数的 PUT REST 调用

performance - 为什么 diff(!=,<>) 比 equal(=,==) 更快?

python - python中多个函数的有序reduce

apache-spark - 调试 python-spark 代码的最佳实践

java - 使用 for 循环从带计数的句子中找到重复的单词

java - 如何在 Gradle 中设置构建以不将 JUnit 测试用例部署到 JBoss AS 7.1

java - Tomcat 7 和 Oracle 连接池

android - OpenGL/Android 大 Sprite 四边形表现不佳

apache-spark - Spark 流: how does mapWithState function work in cluster?

斯卡拉 Spark : Sum all columns across all rows