如何使用sparklyr显示DataFrames的内存使用情况?

时间:2017-10-26 02:53:27

标签: r apache-spark sparklyr

与列出本地R环境中对象的内存使用情况的code snippet类似,是否有类似的命令来查看Spark连接中可用的DataFrame内存?例如。类似于src_tbls(sc)的东西,目前只列出所有DataFrame但不列出内存使用情况。

1 个答案:

答案 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="/"
))