我经常处理被YARN杀死超过内存限制的容器。我怀疑它与低效的缓存/未存在的RDDS / Dataframe有关。
调试此类问题的最佳方法是什么?
我看过"存储" Spark Web UI中的选项卡,但" RDD名称"没有比#34; MapPartitionsRDD"更具描述性。或者" UnionRDD"。如何确定哪些特定RDD占用缓存中的最大空间?
为了弄清楚Out of Memory错误,我需要弄清楚哪些RDD占用了缓存中的最多空间。我也希望能够跟踪他们何时无人问津。
答案 0 :(得分:1)
对于RDDs
,您可以使用setName
方法设置有意义的名称:
val rdd: RDD[T] = ???
rdd.setName("foo")
对于catalog
支持的表:
val df: DataFrame = ???
df.createOrReplaceTempView("foo")
spark.catalog.cacheTable("foo")
目录中的名称将反映在用户界面和SparkContext.getPersistentRDD
。
我不知道任何适用于独立Datasets
的解决方案。