如何通过 Spark WEB UI 监控作业的进度?在本地运行 Spark,我可以通过端口 4040 访问 Spark UI,使用 http://localhost:4040。
问问题
1594 次
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 回答