【发布时间】:2018-04-07 07:01:45
【问题描述】:
类似于code snippet 列出本地R 环境中对象的内存使用情况,是否有类似的命令可以查看Spark 连接中可用的DataFrames 内存?例如。类似于 src_tbls(sc) 的东西,目前只列出所有 DataFrame,但不列出内存使用情况。
【问题讨论】:
标签: r apache-spark sparklyr
类似于code snippet 列出本地R 环境中对象的内存使用情况,是否有类似的命令可以查看Spark 连接中可用的DataFrames 内存?例如。类似于 src_tbls(sc) 的东西,目前只列出所有 DataFrame,但不列出内存使用情况。
【问题讨论】:
标签: r apache-spark sparklyr
首先你必须记住,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="/"
))
【讨论】: