我正在远程ssh会话中(vs代码内部人员)在vs代码中调试Spark作业(pyspark)
在远程ssh上使用vs代码编写程序1.35.0。
这是我的launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: IDI Spark Training",
"type": "python",
"request": "launch",
"args": ["--queue", "ds-others"],
"linux": {
"pythonPath": "/bin/spark-submit"
},
"program": "${file}",
}
]
}
要使我的Spark集群执行作业,我需要将特定的队列名称传递给spark-submit命令。当我手动执行作业时,我使用
spark-submit --queue ds-others training.py
在我的终端中执行时效果很好
基于上面的launch.json,当我启动调试器时,调试控制台将执行:
cd /hadoop/met_scripts/datascience/dnaanalytics_us_group/us_grp_mo_idi_fwa ; env PYTHONIOENCODING=UTF-8 PYTHONUNBUFFERED=1 /bin/spark-submit /home/nokyere/.vscode-server-insiders/extensions/ms-python.python-2019.5.17517/pythonFiles/ptvsd_launcher.py --default --client --host localhost --port 40845 /hadoop/met_scripts/datascience/dnaanalytics_us_group/us_grp_mo_idi_fwa/python/training.py --queue ds-others
所以看起来vs代码在spark-submit之后立即添加了自己的参数,但是我指定的参数仅在python脚本通过后才通过。这导致我的作业无法运行,因此调试不起作用。我没有收到错误消息。我只知道该工作尚未开始,因为vs代码如何添加运行该工作所需的参数。当我通过spark-submit提交作业并在传递脚本名称后传递参数时,会观察到相同的行为。但是当我通过脚本之前的安排时,就可以了。
我想知道为什么vs代码在脚本名称后传递用户指定的参数,并且如果有什么我可以更改VS Code传递参数的顺序。我需要在脚本名称之前添加“ --queue ds-others”。谢谢。