如何使用 sparklyr 显示数据帧的内存使用情况?
How to show memory usage of DataFrames using sparklyr?
类似于这个code snippet,它列出了本地R
环境中对象的内存使用情况,是否有类似的命令来查看Spark连接中可用的DataFrames的内存?例如。类似于 src_tbls(sc)
,目前只列出所有数据帧,但不列出内存使用情况。
首先你要记住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="/"
))
类似于这个code snippet,它列出了本地R
环境中对象的内存使用情况,是否有类似的命令来查看Spark连接中可用的DataFrames的内存?例如。类似于 src_tbls(sc)
,目前只列出所有数据帧,但不列出内存使用情况。
首先你要记住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="/"
))