在 ipdb-fashion 中调试 pyspark

Debugging pyspark in ipdb-fashion

在开发 python 代码时,我使用了包 ipdb.

这会停止 python 代码的执行,我在其中插入 ipdb.set_trace(),并向我显示 python 解释器命令行。

但是,在我为 pyspark 开发并使用 spark-submit 发送的 python 代码中,ipdb 包不起作用。

所以我的问题是:有没有一种方法可以像使用 ipdb 包一样调试我的 pyspark 代码?

注意:显然,对于在远程节点上执行的 python 代码,这是不可能的。但是当 spark-submit 与选项 --master local[1] 一起使用时,我希望这是可能的。

PS。这里有一个相关的问题,但范围较窄:How to PySpark Codes in Debug Jupyter Notebook

PYSPARK_DRIVER_PYTHON=ipython pyspark

      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.4.3
      /_/

Using Python version 3.7.1 (default, Jun 16 2019 23:56:28)
SparkSession available as 'spark'.

In [1]: sc.stop()

In [2]: run -d main.py
Breakpoint 1 at /Users/andrii/work/demo/main.py:1
NOTE: Enter 'c' at the ipdb>  prompt to continue execution.
> /Users/andrii/work/demo/main.py(1)<module>()
1---> 1 print(123)
      2 import ipdb;ipdb.set_trace()
      3 a = 2
      4 b = 3

In [3]: run main.py
123
> /Users/andrii/work/demo/main.py(3)<module>()
      2 import ipdb;ipdb.set_trace()
----> 3 a = 2
      4 b = 3