在PySparkShell应用程序UI([server]:8088)的 Storage 选项卡上,我可以看到有关我正在使用的RDD的信息。其中一列是 Fraction Cached 。
如何以编程方式检索此百分比?
我可以使用getStorageLevel()
获取有关RDD缓存的一些信息,但不能使用 Fraction Cached 。
我必须自己计算吗?
答案 0 :(得分:2)
SparkContext.getRDDStorageInfo
可能是您正在寻找的东西。它会返回Array
RDDInfo
,其中提供有关以下内容的信息:
它没有直接暴露在PySpark中,所以你必须有点创意:
from operator import truediv
storage_info = sc._jsc.sc().getRDDStorageInfo()
[{
"memSize": s.memSize(),
"numPartitions": s.numPartitions(),
"numCachedPartitions": s.numCachedPartitions(),
"fractionCached": truediv(s.numCachedPartitions(), s.numPartitions())
} for s in storage_info]
如果您有权访问REST API,您当然可以直接使用它:
import requests
url = "http://{0}:{1}/api/v1/applications/{2}/storage/rdd/".format(
host, port, sc.applicationId
)
[r.json() for r in [
requests.get("{0}{1}".format(url, rdd.get("id"))) for
rdd in requests.get(url).json()
] if r.status_code == 200]