【发布时间】:2016-04-20 15:04:10
【问题描述】:
我知道collect() 等一些 Spark 操作会导致性能问题。
已在documentation引用
要打印驱动程序上的所有元素,可以使用 collect() 方法首先将 RDD 带到驱动程序节点:
rdd.collect().foreach(println)。这可能会导致驱动程序内存不足,但是,
因为collect() 将整个RDD 提取到一台机器上;如果只需要打印 RDD 的几个元素,更安全的方法是使用take():rdd.take(100).foreach(println)。
还有一个相关的 SE 问题:Spark runs out of memory when grouping by key
我知道groupByKey(), reduceByKey() 如果并行设置不正确,可能会导致内存不足。
其他Transformations和Action命令我没有得到足够的证据,必须谨慎使用。
这三个是唯一需要处理的命令吗?我对以下命令也有疑问
aggregateByKey()-
sortByKey() -
persist()/cache()
如果您提供有关密集命令(全局跨分区而不是单个分区或低性能命令)的信息,那就太好了,必须通过更好的保护来解决这些问题。
【问题讨论】:
标签: performance scala apache-spark rdd