博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IDEA导入spark源代码调试
阅读量:6840 次
发布时间:2019-06-26

本文共 1508 字,大约阅读时间需要 5 分钟。

hot3.png

  • 获取源码

官网下载源码到本地后,需要先进行编译,参考,编译很简单,这里使用4个线程,跳过tests,以此加速编译。这个编译会产生一些必要的源代码,如Catalyst项目下的,所以是必要的一步:

cd ~/workspace/spark-2.2.0build/mvn -T 4 -DskipTests clean package# 编译完成后,测试一下./bin/spark-shell

这里需要下载很多依赖包,会花一些时间

  • maven导入

打开IDEA,Import from Project -> 选择spark源代码目录 -> Import from project from external model 并勾选Maven,一路next就导入成功

  • build报错

Error:(45, 66) not found: type SparkFlumeProtocol  val transactionTimeout: Int, val backOffInterval: Int) extends SparkFlumeProtocol with Logging {                                                                 ^Error:(70, 39) not found: type EventBatch  override def getEventBatch(n: Int): EventBatch = {

这个问题是由于flume-sink所需的部分源文件idea不会自动下载,所有编译时不能通过。

解决方式:

在intellij ieda里面: 

- 打开View -> Tool Windows -> Maven Projects 
- 右击Spark Project External Flume Sink 
- 点击Generate Sources and Update Folders 
随后,Intellij IDEA会自动下载Flume Sink相关的包

然后重新build -> Make Project,一切ok!!

This should generate source code from sparkflume.avdl. 

Generate Sources and Update Folders do can resolve type SparkFlumeProtocol not found issue. 
来源: 

  • 添加运行依赖的jars

再次运行,这次会花费比较长的时间,因为已经可以成功编译LogQuery啦,但是还是没能运行成功,报错如下:  不要慌,这说明你的代码编译已经成功啦,运行出错的原因是,运行Spark App一般都是通过spark-submit命令,把你的jar运行到已经安装的Spark环境里,也就是所有的Spark依赖都已经有啦,现在你用IDE的方式,就会缺少依赖。

解决方案如下:

Menu -> File -> Project Structure -> Modules -> spark-examples_2.11 -> Dependencies 添加依赖 jars -> {spark dir}/spark/assembly/target/scala-2.11/jars/

  • 添加运行参数

在VM options里添加如下参数:

-Dspark.master=local

然后再run,代码成功运行

转载于:https://my.oschina.net/u/2935389/blog/1556663

你可能感兴趣的文章
AD恢复(3)使用AD回收站
查看>>
微软私有云分享(R2)7-Linux虚拟机无DNS?
查看>>
DNS(二)--正反解析及主从配置
查看>>
windows环境下redis.conf配置文件
查看>>
PHP严重致命错误处理:php Fatal error: Cannot redeclare clas
查看>>
RMAN 中delete exipired 和 delete obsolete 的区别
查看>>
C++中的结构体
查看>>
Autofac 解释第一个例子 《第一篇》
查看>>
ThinkPHP的安装
查看>>
搭建LAMP下的ucenter家园博客
查看>>
Eslint配置文件 `.eslintrc.js`
查看>>
Linux系统详解 系统的启动、登录、注销与开关机
查看>>
CentOS 6.0 VNC远程桌面配置
查看>>
Ubuntu 14.04环境变量修改
查看>>
Start Developing iOS Apps Today系列(十二)
查看>>
简单的冒泡排序
查看>>
Oracle锁表 行级锁 表级锁 行级锁
查看>>
Linux下如何把时间转成秒数,或把秒数转换成标准时间
查看>>
操作系统---Systemd
查看>>
JS中定义式函数与变量时函数的差别
查看>>