从 Jupyter/pyspark 中确定 Spark UI 端口

Ric*_*chD 5 apache-spark pyspark

我正在运行多个 Jupyter 笔记本,每个笔记本都有自己的 pyspark (Spark 1.6.1) 内核。如何发现哪个 Spark UI 实例属于哪个内核?显然,我可以循环浏览打开的页面(http://sparky:4040http://sparky:4041等)并尝试解决它,但我希望有一种编程方式来做到这一点。

编辑:我没有服务器的根访问权限......

Al *_*hri 5

如果sc是您的 Spark 上下文,您可以运行:

sc.uiWebUrl.split(':')[-1]
Run Code Online (Sandbox Code Playgroud)


Ric*_*chD 3

这很丑陋,但它有效......

import urllib
sparkHost = "sparky"

for x in range(4040,4060):
    link = "http://"+sparkHost+":"+str(x)+"/environment/"
    try:
        f = urllib.request.urlopen(link)
        myfile = f.read()
        if (sc.applicationId in str(myfile)):
            print ('Application ID found on port ', x)
    except:
        pass
Run Code Online (Sandbox Code Playgroud)

对此的任何改进都非常受欢迎!