我想在仍然使用 yarn 的同时单步执行 python-spark 代码。我目前的做法是启动 pyspark shell,复制粘贴,然后逐行执行代码。我想知道是否有更好的方法。pdb.set_trace()
如果它有效,将是一个更有效的选择。我用 spark-submit --master yarn --deploy-mode client
试过了.程序确实停止了,并在 pdb.set_trace()
行给了我一个 shell。被称为。但是,在 shell 中输入的任何 pdb 命令都会挂起。 pdb.set_trace()
插入在 Spark 函数调用之间,据我所知,应该在本地运行的驱动程序中执行并连接终端。
我读了这篇文章 How can pyspark be called in debug mode?这似乎表明不依赖 IDE(PyCharm)就不可能使用 pdb。但是,如果可以交互式运行 spark 代码,那么应该有一种方法可以让 python-spark“一直运行到这一行,并给我一个用于 REPL 的 shell(交互式使用)。我还没有找到任何方法来做到这一点. 任何建议/引用表示赞赏。
最佳答案
我也经历过pdb的挂。
我找到了 pdb_clone ,它就像一个魅力。
一、安装pdb_clone
> pip install pdb_clone
然后,在要调试的位置包含这些行。
from pdb_clone import pdb
pdb.set_trace_remote()
当您的程序在该行上时,在另一个终端上运行 pdb-attach 命令。
> pdb-attach
关于apache-spark - 调试 python-spark 代码的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49247540/