分享

IDEA(spark2.3)Scala如何实现本地调试

本帖最后由 pig2 于 2018-9-3 20:03 编辑
问题导读
1.本文的环境是什么?
2.如何打断点?

3.查看变量的数据有几种方式?

关注最新经典文章,欢迎关注公众号

这里重点讲如何调试,也会有视频会放到about云知识星球。

1.准备环境
(1)spark2.3
(2)Scala 2.11
(3)jdk8
代码:
[mw_shl_code=scala,true]package aboutyun.com
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object WordCount {
  def main(args : Array[String]){
    val conf =new SparkConf().setAppName("WordCountScala");
    val master=conf.setMaster("local[2]")
    val sc = new SparkContext(conf);

    val lines=sc.textFile("file:///D:/wc.txt")
    val words = lines.flatMap(line => line.split(" "))
    val pairs = words.map( x=> (x,1))
    val wordCounts = pairs.reduceByKey(_+_)
    wordCounts.foreach(wordCount => println (wordCount._1 +"出现" +wordCount._2 + " 次"))
  }
}[/mw_shl_code]

代码准备完毕,我们看到上面需要准备什么?
1.当然首先是开发环境,如不会可参考下面文章,但是注意版本,与你的spark版本一致
spark开发环境详细教程1:IntelliJ IDEA使用详细说明
http://www.aboutyun.com/forum.php?mod=viewthread&tid=22320


2.创建WordCount object,然后将上面代码复制到里面。注意:master为local
这样我们就准备好环境了。

2.准备调试
1.首先打断点:
如果你做过传统开发,相信应该知道,打断点其实就是在对应行,用鼠标左键,点击下即设置了断点,如下图

1.png

然后我们这里记住两个重要的快捷键:
F7和F8,特别是F8。

F8单步调试,不进入函数内部。
这个是我们常用的,可以看到变量等
F7是干什么的那?
如果我们想研究源码,可以用到,因为它会跳到函数里。

更多快捷键:
快捷键
功能描述
F8
单步调试,不进入函数内部
F7
单步调试,进入函数内部
Shift+F7
选择要进入的函数
Shift+F8
跳出函数
Alt+F9
运行到断点
Alt+F8
执行表达式查看结果
F9
继续执行,进入下一个断点或执行完程序
Ctrl+F8
设置/取消当前行断点
Ctrl+Shift+F8
查看断点



webwxgetmsgimg.jpg

已有(7)人评论

跳转到指定楼层
pig2 发表于 2018-9-3 19:53:21
进一步补充:
1.png

1,rerun XXX,这个就是直接重新跑某个程序。
2,这个相当于eclipse里面的f8,直接跑完,到下一个断点停下,没有就直接跑完程序。
3,停止项目或者程序。要是自己的main呢,点一下就停下了,要是Java web项目,则点2下,就把服务器给停了。
4,查看所有的断点设置情况。具体详情,下面有示意图,再细细解释。
5,直接取消所有断点,让所有断点无效。
6,要是你一不小心把这个下面的布局给弄乱了,你点这个,就把下面的布局给还原咯。
7,跳转到当前代码所执行的地方,也就是说你在看代码的时候,点到其他地方,一点这个按钮,就到了程序执行到当前哪行的代码的地方。
8,下一步,如果是方法,他是不会跳进去的。就是一行行的往下走。(eclipse里面的快捷键就是f6)
9,跳转到详情,如果下一行调试代码是可执行方法,就可以f5进去,查看这个方法的运行详细情况。重点就是点进去执行
10,从详情跳出去,和上面的9相反。
11,看字面意思就是跳转到那个光标所在的地方,前提是他能路上没断点拦着。
12,这个点开之后,可以计算你想要看的代码段的值,后面详细上图。
13,看意思,同eclipse里面的watch,查看某个对象的值,自定义的对象。
14,把自定义的查看对象的值,分开到另一个tab页。
15,有时候当我们步入方法体之后,还想回退到方法体外,点这个按钮后,断点重新回到方法体之外。在继续还是可以再次进到方法内


回复

使用道具 举报

pig2 发表于 2018-9-3 19:57:41
如果我们想查看某个变量的值有:

1选中对象后,鼠标悬停在对象上 2 秒左右

2.通过debugger窗口
1.png


回复

使用道具 举报

jiangzi 发表于 2018-9-7 12:13:12
IDEA(spark2.3)Scala如何实现,学习了~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条