当前位置:网站首页>IDEA远程调试spark-submit提交的jar

IDEA远程调试spark-submit提交的jar

2022-06-13 10:17:00 Interest1_wyt

1、编辑代码

object WordCount {

  def main(args: Array[String]): Unit = {

    val sc = new SparkContext(new SparkConf().setAppName("WordCount "))

    val rdd: RDD[String] = sc.makeRDD(List(
      "spark hello", "hive", "hadoop hbase", "spark hadoop", "hbase"
    ))

    val value: RDD[String] = rdd.flatMap(_.split(" "))

    val mapRDD: RDD[(String, Int)] = value.map((_, 1))

    val result: RDD[(String, Int)] = mapRDD.reduceByKey(_ + _)

    result.collect().foreach(println)

  }

}

2、打开IDEA配置,配置远程连接

 其中主要配置的有两项,一个是host,一个是port。不过图中我圈出来了三处,最后一处仔细阅读其英文描述可以知道,那一串命令是需要我们拷贝添加到spark-submit提交命令的参数中的。

 3、修改spark-submit,添加远程连接的参数

spark-submit \
--master spark://bigdata.node2:7077 \
--class test.wordcount.WordCount \
--num-executors 1 \
--driver-memory 499m \
--driver-cores 1 \
--executor-memory 499m \
--executor-cores 1 \
--driver-java-options -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8888 \
/opt/spark-jar/wyt01bigdata-1.0-SNAPSHOT.jar

可以看到,我们将IDEA中生成的远程命令-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8888 添加在了spark提交命令中。这里有个参数要特别留意下,对于debug很有用,那就是suspend=y,y表示启动的JVM会暂停等待,直到IDEA调试器连接上才继续执行。如果设置suspend=n,那么远程服务不会等待IDEA连接。

另外这里还有一个需要留意的点是,因为上一步我们远程debug指定了host和port,所以这里我们千万不要配置deploy-mode为cluster集群模式。因为集群模式是随便找个机器启动应用,很有可能不在我们监听的那台服务器启动,所以远程debug的部署模式通常选用client(我们不配置部署模式时默认则是client

原网站

版权声明
本文为[Interest1_wyt]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Interest1_wyt/article/details/125242330