PySpark:如何使用/调整垃圾收集器?

时间:2018-03-26 19:13:12

标签: apache-spark pyspark spark-dataframe

有很多关于如何在Java中调整垃圾收集器的示例。它通常通过传递命令来完成,例如-XX:+UseParallelGC -XX:+UseParallelOldGC。如何在PySpark中调整GC?

1 个答案:

答案 0 :(得分:0)

由于您使用标记了问题,答案非常简单 - 不需要进行垃圾收集调整,即使有,也通常使用Java GC选项。

理解原因:

  • Spark DataFrame主要是一个Java对象,只有驱动程序才会出现Python包装器 - 除了用户定义的函数之外,数据和SQL操作并没有真正击中Python解释器。
  • Spark SQL在很大程度上依赖于本机堆外内存,因此GC调优的影响应该可以忽略不计。堆内存主要用于Spark MLlib - 如果您的代码依赖于ML功能,请使用标准JVM GC选项。
  • 即使您的代码使用Python udfs,只有在使用非标准解释器实现(CPython除外)时才需要GC调优。使用CPython主要垃圾收集方法是引用计数,它不需要任何调整。只有存在不太可能在udf中出现的循环参考时才需要完全GC循环。