与列出本地R
环境中对象的内存使用情况的code snippet类似,是否有类似的命令来查看Spark连接中可用的DataFrame内存?例如。类似于src_tbls(sc)
的东西,目前只列出所有DataFrame但不列出内存使用情况。
答案 0 :(得分:1)
首先,您必须记住Spark中使用的数据结构默认是惰性的。除非有缓存,否则没有与数据相关的存储开销。缓存本身是短暂的 - 取决于StorageLevel
数据可以被驱逐,由于失败或节点退役时丢失。
您还必须记住SQL使用压缩列存储,因此内存使用可能会受到数据分布的影响。
如果您对操作系统看到的总内存使用率感兴趣,您应该使用适当的监控解决方案,例如Ganglia或Munin。
据说可以使用SparkContext
:
sc <- spark_connect(...)
sc %>%
spark_context %>%
invoke("getRDDStorageInfo")
或通过查询Spark UI:
url <- sc %>% spark_context %>% invoke("uiWebUrl") %>% invoke("get")
browseURL(paste(url, "storage", sep="/"))
或REST API:
app_id <- sc %>% spark_context %>% invoke("applicationId")
httr::GET(paste(
url, "api", "v1", "applications", app_id, "storage", "rdd", sep="/"
))