apache-spark - 调试 python-spark 代码的最佳实践

标签 apache-spark pyspark pdb

我想在仍然使用 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/

相关文章:

mysql - CoarseGrainedExecutorBackend ERROR Spark

list - 在 PySpark 中将值列表分配给具有二进制值的列

python - 如何查看当前安装的 `pdb`(Python调试器)的版本?

python - ADLS Gen2 上的 Kubernetes Spark-submit 错误 : Class org. apache.hadoop.fs.azurebfs.SecureAzureBlobFileSystem 未找到

apache-spark - VectorUDT 用法

apache-spark - Apache Spark UI 显示的存储内存比 --driver-memory 选项中设置的少

apache-spark - 计算pyspark中每组成对连续行之间的时间差

pyspark - 如何确定 Spark 中 ALS.transImplicit 的偏好/置信度?

c++ - 使用 `.reload` 强制 WinDbg 加载 pdb 不起作用

python - 当函数的调用跨多行时,如何单步执行该函数?