Windows上IDEA搭建最新Spark2.4.3源码调试的开发环境
相信很多同学都想通过阅读一些框架的源码,来提高自己的代码能力,但往往在第一步,搭建环境的时候就碰了壁。
本篇就来介绍下如何在Windows下,将最新版的Spark2.4.3编译,并导入到IDEA编译器中。最后通过在IDEA运行Spark自带的一共Example代码结尾。
1.搭建Spark源码环境所需准备
搭建Spark源码环境所需要准备的一些东西需要先准备好。这里也有我踩过的一些坑,我也会一并介绍。
首先需要先下载maven,并将maven的源地址修改为阿里源,相信很多同学都已经配置好maven了,这里简单提下,maven源地址在国外,不改成阿里源,那在下载依赖的时候,那速度会让你怀疑人生的。
然后下载下scala2.11.8/scala2.11.12,因为目前spark似乎还不支持2.12+,所以需要scala2.11+,至于2.11.8还是2.11.12,应该没什么影响,不过我自己机器上是2.11.8就是。
下载spark源码,不过不能直接github到spark的仓库里面直接下载,目前仓库里面的是3.+的测试版,应该要到releases里面去找。

不过我已经帮你们把那个链接找到了,复制到浏览器地址就有下载页。
下载完后解压,准备工作就算做完了。
2.编译Spark源码
直接导入项目是不行的,因为有些文件需要先编译才会产生,不过要编译环境也不难,之前不是已经配置过的maven嘛。将下载好的spark2.4.3解压,进入到其目录,打开cmd,运行如下命令就行
mvn -T 4 -DskipTests clean package
这里要注意一下,spark2.4.3目录下的pom.xml文件,有两个地方需要修改。第一个是pom.xml里面的属性,里面默认是3.5.4,需要改成自己maven的版本,比如我电脑是3.5.2。

电脑上的maven版本可以通mvn --version这个命令查看。

比如我的电脑就是3.5.2,那么相应的pom.xml里面的就改成3.5.2 。
如果不修改的话,编译的时候是会报错的。
第二个要修改的地方是,修改pom.xml文件中的<scala.version>属性,默认是2.11.12,需要修改成自己电脑中的scala版本,这个下载的时候应该就会选择,不多介绍。

如果<scala.version>和你电脑上的scala版本不一致的话,会出现下面的错误:
Error:scalac: Scala compiler JARs not found
另外说一句,spark源文件中有多个pom.xml,只需要改根目录下的pom.xml文件就可以了。完成修改后,就能开始编译了。
对了,编译的时候会比较慢,而且编译的时候也会占用电脑比较多的资源,建议睡觉前编译:)
3.导入
编译完成后,现在就可以导入到IDEA里面了,直接
open => ${spark2.4.3}_path/pom.xml => Open as Project
导入后先别着急,需要先改一下IDEA的maven配置,
File => Setting => 直接搜索maven => 更改Maven home directory
即更改如图所示的地方,

因为IDEA会有自带的maven,需要改成电脑上自己安装的,否则因为你是用自己电脑上maven编译的,这时候用IDEA的maven来处理的话,某些依赖会报以下错误:
Library Maven: has broken classes path:
其实就是找不到啦。
OK,导入成功之后,别急,还有最后一个地方需要修改。
Menu -> Run -> Edit Configurations -> 点左上的 + -> Application
在VM options: 里面,加上-Dspark.master=local。这个的作用是让spark直接在本机启动。

配置到这里就结束了,接下来可以运行一个example看看了。
到examples -> src -> scala -> LogQuery -> 右键 Run
就能成功看到运行了第一个示例spark程序了。

4.总结
总结起来,就是先编译,再导入,最后运行。
这个过程说起来简单,不过其实有些坑却很容易让人半途而废,有些坑我已经踩过了,希望能帮到你们:)
如果你在这个过程中出现什么问题无法解决,也欢迎在本篇下留言,有空的话我也会帮忙看看的~
以上!
Windows上IDEA搭建最新Spark2.4.3源码调试的开发环境的更多相关文章
- WAMP Server助你在Windows上快速搭建PHP集成环境
WAMP Server助你在Windows上快速搭建PHP集成环境 原文地址 我想只要爬过几天网的同学都会知道PHP吧,异次元的新版本就是基于PHP的WordPress程序制造出来的,还有国内绝大部分 ...
- spark最新源码下载并导入到开发环境下助推高质量代码(Scala IDEA for Eclipse和IntelliJ IDEA皆适用)(以spark2.2.0源码包为例)(图文详解)
不多说,直接上干货! 前言 其实啊,无论你是初学者还是具备了有一定spark编程经验,都需要对spark源码足够重视起来. 本人,肺腑之己见,想要成为大数据的大牛和顶尖专家,多结合源码和操练编程. ...
- [原创]在Windows和Linux中搭建PostgreSQL源码调试环境
张文升http://ode.cnblogs.comEmail:wensheng.zhang#foxmail.com 配图太多,完整pdf下载请点这里 本文使用Xming.Putty和VMWare几款工 ...
- 年终福利,PHP7+Apache2.4+MySQL5.6 源码编译安装,环境配置,搭建你自己的LAMP环境
PHP7 都出来了,你还在玩PHP5吗? MySQL5.6 早都出来了,你还在玩MySql5.2吗? Apache2.4 早都出来了,你还在玩Apache2.2吗? 笔者不才,愿意亲自搭建环境,供搭建 ...
- zookeeper集群搭建及Leader选举算法源码解析
第一章.zookeeper概述 一.zookeeper 简介 zookeeper 是一个开源的分布式应用程序协调服务器,是 Hadoop 的重要组件. zooKeeper 是一个分布式的,开放源码的分 ...
- struts2源码调试环境的搭建
源码之前,了无秘密. 说一句逼格很高的话来镇镇场子. 这两天在看陆舟的<Struts2技术内幕>,一边看脑子一边冒出四个字:相见恨晚.极力推荐想了解Struts2的人看看这本书,之前一直在 ...
- Spark2.0.0源码编译
Hive默认使用MapReduce作为执行引擎,即Hive on mr,Hive还可以使用Tez和Spark作为其执行引擎,分别为Hive on Tez和Hive on Spark.由于MapRedu ...
- 搭建Spark源码研读和代码调试的开发环境
转载自https://github.com/linbojin/spark-notes/blob/master/ide-setup.md 搭建Spark源码研读和代码调试的开发环境 工欲善其事,必先利其 ...
- 如何搭建自己的SpringBoot源码调试环境?--SpringBoot源码(一)
1 前言 这是SpringBoot2.1源码分析专题的第一篇文章,主要讲如何来搭建我们的源码阅读调试环境.如果有经验的小伙伴们可以略过此篇文章. 2 环境安装要求 IntelliJ IDEA JDK1 ...
随机推荐
- [leetcode] 80. Remove Duplicates from Sorted Array II (Medium)
排序数组去重题,保留重复两个次数以内的元素,不申请新的空间. 解法一: 因为已经排好序,所以出现重复的话只能是连续着,所以利用个变量存储出现次数,借此判断. Runtime: 20 ms, faste ...
- [leetcode] 464. Can I Win (Medium)
原题链接 两个人依次从1~maxNum中选取数字(不可重复选取同一个),累和.当一方选取数字累和后结果大于等于给定的目标数字,则此人胜利. 题目给一个maxNum和targetNum,要求判断先手能否 ...
- 使用nginx+tomcat实现动静分离
动态资源与静态资源的区别 微微的概括一下 静态资源: 当用户多次访问这个资源,资源的源代码永远不会改变的资源. 动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变. 什么是动静分离 动静分离 ...
- .Net Core2.2 WebApi上传文件
基于.net core2.2的webapi程序,接收客户端上传的文件.按照以下写法,file的值永远是null [HttpPost] public void Post([FromForm] IForm ...
- JasperReport报表
最近在做报表工作,公司要求使用正版免费的报表软件,想想还是用JasperReport. JasperReport是一个纯Java写的开源免费报表工具库,在java开源免费报表中,排在前列. 可是开源免 ...
- LeetCode: 3 无重复字符的最长子串 (Java)
3. 无重复字符的最长子串 https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ 最初始的解 ...
- Oracle JDK与OpenJDK到底有什么不同?
不知道各位developer平时是否有过疑问,Oracle JDK是什么,OpenJDK又是什么? Oracle JDK便是平常我们在windows系统上做开发使用的JDK,又称作SUN JDK.O ...
- 常用服务部署脚本(nodejs,pyenv,go,redis,)
根据工作总结的常用安装脚本,要求linux-64系统 #!/bin/bash path=/usr/local/src node () { cd $path #wget https://nodejs.o ...
- Linux ln 命令
Linux 中的文件分为 Hard Link 和 Symbolic Link 两种.Hard Link 文件又被称为硬链接文件.实体链接文件,Symbolic Link 文件则常被称为符号链接.软链接 ...
- 初次见面C#排坑记录
排一次开发C#遇到的坑,同时说一下自己对C#中文件夹构建方式的体会. 一个开发Java的人留下了痛苦的泪水,变量命名规则不一样,连括号打的都不一样,