12

如何通过 Spark WEB UI 监控作业的进度?在本地运行 Spark,我可以通过端口 4040 访问 Spark UI,使用 http://localhost:4040。

4

2 回答 2

5

按照这个colab 笔记本,您可以执行以下操作。

首先,配置 Spark UI 并启动 Spark 会话:

import findspark
findspark.init()
from pyspark.sql import SparkSession
from pyspark import SparkContext, SparkConf


conf = SparkConf().set('spark.ui.port', '4050')
sc = SparkContext(conf=conf)
spark = SparkSession.builder.master('local[*]').getOrCreate()

在下一个单元格运行中:

!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
!unzip ngrok-stable-linux-amd64.zip
get_ipython().system_raw('./ngrok http 4050 &')

这将安装ngrok并创建一个 URL,您可以通过该 URL 访问 Spark UI(等待 10 秒以启动)。

现在,要访问 URL,请调用:

!curl -s http://localhost:4040/api/tunnels

它打印出一个看起来像这样(截断)的 JSON:

{"tunnels":[{"name":"command_line","uri":"/api/tunnels/command_line","public_url":"https://1b881e94406c.ngrok.io","proto":"https", ... }

-- 你正在寻找"public_url"上面的这个,那是你的 Spark UI 的 URL。

或者,运行这个:

!curl -s http://localhost:4040/api/tunnels | python3 -c "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"

我已经对其进行了测试,它对我有用。

于 2020-10-03T11:24:15.273 回答
0

该方法可能很短:

!pip install -q pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.config('spark.ui.port', '4050').getOrCreate()

!wget -qnc https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
!unzip -n -q ngrok-stable-linux-amd64.zip
get_ipython().system_raw('./ngrok http 4050 &')
!sleep 5
!curl -s http://localhost:4040/api/tunnels | grep -Po 'public_url":"(?=https)\K[^"]*'

结果:

在此处输入图像描述

于 2021-11-08T14:01:21.210 回答