在本地的IDEA调试 在集群中运行的Spark代码
场景:写好的代码在本地可以跑通,但是到了集群中就有可能报错,只有通过远程的调试,才能了解为什么报错,进而修复存在的问题
参考https://blog.youkuaiyun.com/l1212xiao/article/details/80854767
准备
远程调试时用到了JVM的一些参数
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8888
-Xdebug 启用调试特性
-Xrunjdwp 启用JDWP实现,包含若干子选项:
transport=dt_socket JPDA front-end和back-end之间的传输方法。dt_socket表示使用套接字传输。
address=8888 JVM在8888端口上监听请求,这个设定为一个不冲突的端口即可。
server=y y表示启动的JVM是被调试者。如果为n,则表示启动的JVM是调试器。
suspend=y y表示启动的JVM会暂停等待,直到调试器连接上才继续执行。suspend=n,则JVM不会暂停等待。
步骤
准备测试spark程序 -> 提交到集群中 -> IDEA启动调试
准备测试spark程序
object SparkDemo {
def main(args: Array[String]): Unit = {
val conf = new SparkConf()
conf.setAppName("WordCount")
val sc = new SparkCo