从 SparkR 获取应用程序 ID 以创建 Spark UI url

Getting application ID from SparkR to create Spark UI url

我想从 SparkR shell 生成一个 link 以在 Yarn 模式下查看 Spark UI。通常 Spark UI 位于端口 4040,但在 Yarn 模式下显然它位于类似 [host]:9046/proxy/application_1234567890123_0001/ 的位置,其中路径的最后一部分是唯一的 applicationId。

其他 SO 答案显示了如何获取 Scala and Python shell 的 applicationID。我们如何从 SparkR 获取 applicationID?

我尝试了 SparkR:::callJMethod(sc, "applicationId") 作为暗中刺杀,但没有奏效。

我也尝试了一些与 system("yarn application -list") 类似的方法,但这在 RStudio 中似乎不起作用,并且还有其他限制。

您可以直接从 YARN 网络 UI 跟随 link 进入 Spark UI。在 YARN web UI 端口 8088 上,您可以单击 'Running Applications',这应该会向您显示一个 link 到应用程序状态页面。

如果您想使用 callJMethod 来获取应用程序 ID,您可以使用 SparkR:::callJMethod(SparkR:::callJMethod(sc, "sc"), "applicationId") 之类的东西。

我们需要对 sc 进行嵌套调用的原因是因为 sc 是一个 JavaSparkContext 句柄,而 applicationId 仅在 Scala SparkContext 中可用。

创建 spark 会话后,您可以执行以下操作来获取 Spark 应用程序 ID。

print(sparkR.conf("spark.app.id"))