一个困扰着很多初学者,甚至是一些已经有相当 Spark 开发经验的工程师的问题,就是如何在 IDEA 中调试 Spark(注意这里指的是 Spark 本身,而不是基于 Spark 开发的应用)。可能是由于 SBT / Maven 混用以及使用 assembly jar 的缘故,在 IDEA 里直接 build 和调试 Spark 并不方便,往往会碰到一些奇怪的错误,以至于 IDEA 完全退化成一个代码阅读工具和编辑器。这个问题实际上可以通过远程调试很好地解决。以下以监听模式(listen mode)为例演示如何在 IDEA 内“远程”调试本地 SBT 内启动的 Spark test case。
在 IDEA 中建立 Remote Debugging Configuration
选取菜单项 Run > Edit Configurations... 点击左上角加号,选取 Remote 建立一套远程调试配置,并命名为“Remote Debugging (listen)”:
[mw_shl_code=scala,true]sbt (hive)> set javaOptions in Test += "-agentlib:jdwp=transport=dt_socket,server=n,suspend=n,address=localhost:5005"[/mw_shl_code]