如何以编程方式获取有关 PySpark 中执行程序的信息

Ale*_*rov 5 apache-spark pyspark

当一个新的 pyspark 应用程序启动时,它会创建一个漂亮的 Web UI,其中包含作业、阶段、执行程序等选项卡。如果我转到执行程序选项卡,我可以看到执行程序的完整列表以及有关每个执行程序的一些信息 - 例如核心数,使用的存储内存与总数等。

我的问题是我是否可以以某种方式从应用程序本身以编程方式访问相同的信息(或至少其中的一部分),例如看起来像spark.sparkContext.<function_name_to_get_info_about_executors>()

我找到了一些以类似于 webUI 的方式执行 url 请求的解决方法,但我认为我可能缺少一个更简单的解决方案。

我正在使用 Spark 3.0.0

Ale*_*rov 5

到目前为止,我发现的唯一方法对我来说似乎很老套,涉及抓取与 Web UI 查询相同的 url,即这样做:

import urllib.request
import json
sc = spark.sparkContext
u = sc.uiWebUrl + '/api/v1/applications/' + sc.applicationId + '/allexecutors'
with urllib.request.urlopen(u) as url:
    executors_data = json.loads(url.read().decode())
Run Code Online (Sandbox Code Playgroud)