从SparkR shell,我想生成一个链接,在Yarn模式下查看Spark UI。通常Spark UI位于端口4040,但在Yarn模式下,它显然位于类似[host]:9046/proxy/application_1234567890123_0001/
的位置,路径的最后一部分是唯一的applicationId。
其他SO答案显示了如何获得Scala和Python shell的applicationID。我们如何从SparkR获取应用程序ID?
我尝试了SparkR:::callJMethod(sc, "applicationId")
,但没有成功。
我也尝试了一些类似system("yarn application -list")
的东西,但RStudio似乎不起作用,还有其他限制。
您可以直接按照YARN web UI中的链接进入Spark UI。从8088端口的YARN web UI中,您可以单击"运行应用程序",这将显示应用程序状态页面的链接。
如果您想使用callJMethod
来获取应用程序id,您可以使用类似SparkR:::callJMethod(SparkR:::callJMethod(sc, "sc"), "applicationId")
的东西。
我们之所以需要对sc
进行嵌套调用,是因为sc
是JavaSparkContext句柄,而applicationId
仅在Scala SparkContext中可用。
创建spark会话后,您可以执行以下操作来获取spark应用程序id。
print(sparkR.conf("spark.app.id"))