spark源码远程调试开发
来源:互联网 发布:中产阶级焦虑 知乎 编辑:程序博客网 时间:2024/06/08 13:50
对于spark源码和spark执行过程有兴趣的同学,可以搭建一个spark的源码调试环境,来调试远程spark源码执行过程。
由于spark启动都是通过脚本设置一些环境变量执行指定类来启动的,所以在ide里面不能直接调试,需要预先启动一个spark执行代码,然后通过本地的代码进行远程调试。
1.环境
- idea 2017
- maven 3.3(可以将maven的镜像地址设置成国内的,不然编译很久或编译不成功)
- jdk 1.8
- spark 2.x
- scala 2.11
2.下载源码并编译
spark源码导入ide之前要先编译,编译的时候要用到build包里面的脚本,由于脚本是shell,故在windows编译不了,可以在linux上编译好之后放到windows上。
git clone https://github.com/apache/spark.gitcd spark#切换到2.2版本git checkout branch-2.2./build/mvn -DskipTests clean package
编译好之后,在idea里面导入spark源码
3.在ide里面调试
这里以调试spark-sql为例。
首先启动spark-sql,在后面添加上远程调试的参数
sbin/start-thriftserver.sh --driver-java-options "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=10080"
dt_socket:使用的通信方式
server:是主动连接调试器还是作为服务器等待调试器连接
suspend:是否在启动JVM时就暂停,并等待调试器连接
address:地址和端口,地址可以省略,两者用冒号分隔
启动thriftservier后,日志里面显示这样一条记录,就表示客户端可以远程进行源码调试
在idea里面创建一个远程调试客户端,并设置源码进行调试。
点击OK,创建好远程调试客户端。
如下图点击debug,运行。
控制台显示已经连接到远程调试服务
打开PaseDriver并在如图所在行设置断点。
这个类相当于hive的driver类,负责编译sql语句和生成spark任务,在这里就可以查看sql语句是怎样转换成一步步的spark rdd转换。
到这里,用beeline连接thriftserver,并直接一个sql语句,如”show tables”
执行完之后,beeline的命令行就会挂起,这时在idea里面就可以调试执行过程了。
4.其它
例子里面的spark-sql相关可以参考
http://blog.csdn.net/dante_003/article/details/78657689
http://blog.csdn.net/dante_003/article/details/78652534
- spark源码远程调试开发
- Spark源码IDEA远程调试
- Spark作业代码(源码)IDE远程调试
- spark关联源码及远程调试设置
- 远程调试spark源码(基于java的调试工具)
- Eclipse远程调试Spark
- Spark应用远程调试
- Eclipse远程调试Spark
- idea spark远程调试
- spark远程调试
- idea远程调试 spark
- Spark远程调试IDE调试
- Spark本地开发与远程调试环境搭建
- 调试spark源码
- Spark 1.5.0 远程调试
- Spark 1.5.0 远程调试
- Spark 1.5.0 远程调试
- Spark代码Eclipse远程调试
- linux 常用命令整理
- undefined
- Longest Common Substring
- 零食市场,转变的消费人群以及消费特征
- ssh maven 项目环境搭建
- spark源码远程调试开发
- 一种java对象转换成protobuf对象通用方法
- [Java面试十二]数据库概念相关
- IO流
- react-native 笔记本
- Anaconda3安装tensorflow1.3
- Equations
- Qt加载百度地图和谷歌地图
- lintcode&九章算法——Microsoft 面试题 | 我能赢 ? 待解决