如何解决DataFrame的使用寿命在内存中,Spark?
我的问题与内部sprak中的内存管理和GC有关。
如果我要创建一个RDD,它将在我的Executor内存中保留多长时间。
# Program Starts
spark = SparkSession.builder.appName("").master("yarn").getOrCreate()
df = spark.range(10)
df.show()
# other Operations
# Program end!!!
- 执行完成后,它将自动删除。如果是,是否可以在程序执行期间手动删除它。
- 如何以及何时在Spark中调用垃圾回收。我们可以实现像JAVA程序这样的自定义GC并在Spark中使用它吗?
解决方法
- DataFrame是Java对象,因此如果找不到引用,则您的对象可以进行垃圾回收
- 无法调用自定义gc
-
https://databricks.com/blog/2015/05/28/tuning-java-garbage-collection-for-spark-applications.html
-
https://spark.apache.org/docs/2.2.0/tuning.html#memory-management-overview
“它将在我的执行器内存中保留多长时间。”
在这种特殊情况下,spark永远不会实现完整的数据集,而是会逐个迭代。只有少数算子实现了整个数据集。这包括排序/联接/ groupbys / writes / etc
“执行完成后,它将被自动删除。”
火花自动清除所有临时数据。
“如果是,是否有任何方法可以在程序执行期间手动将其删除。”
spark仅在其使用中或已被手动保留时保留这些数据。您特别想完成什么?
“如何以及何时在Spark中调用垃圾回收。”
当达到某些指标时,Spark在JVM和具有自动GC的JVM上运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。