相信很多同学都想通过阅读一些框架的源码,来提高自己的代码能力,但往往在第一步,搭建环境的时候就碰了壁。

本篇就来介绍下如何在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里面去找。

不过我已经帮你们把那个链接找到了,复制到浏览器地址就有下载页。

https://github.com/apache/spark/releases/tag/v2.4.3

下载完后解压,准备工作就算做完了。

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源码调试的开发环境的更多相关文章

  1. WAMP Server助你在Windows上快速搭建PHP集成环境

    WAMP Server助你在Windows上快速搭建PHP集成环境 原文地址 我想只要爬过几天网的同学都会知道PHP吧,异次元的新版本就是基于PHP的WordPress程序制造出来的,还有国内绝大部分 ...

  2. spark最新源码下载并导入到开发环境下助推高质量代码(Scala IDEA for Eclipse和IntelliJ IDEA皆适用)(以spark2.2.0源码包为例)(图文详解)

    不多说,直接上干货! 前言   其实啊,无论你是初学者还是具备了有一定spark编程经验,都需要对spark源码足够重视起来. 本人,肺腑之己见,想要成为大数据的大牛和顶尖专家,多结合源码和操练编程. ...

  3. [原创]在Windows和Linux中搭建PostgreSQL源码调试环境

    张文升http://ode.cnblogs.comEmail:wensheng.zhang#foxmail.com 配图太多,完整pdf下载请点这里 本文使用Xming.Putty和VMWare几款工 ...

  4. 年终福利,PHP7+Apache2.4+MySQL5.6 源码编译安装,环境配置,搭建你自己的LAMP环境

    PHP7 都出来了,你还在玩PHP5吗? MySQL5.6 早都出来了,你还在玩MySql5.2吗? Apache2.4 早都出来了,你还在玩Apache2.2吗? 笔者不才,愿意亲自搭建环境,供搭建 ...

  5. zookeeper集群搭建及Leader选举算法源码解析

    第一章.zookeeper概述 一.zookeeper 简介 zookeeper 是一个开源的分布式应用程序协调服务器,是 Hadoop 的重要组件. zooKeeper 是一个分布式的,开放源码的分 ...

  6. struts2源码调试环境的搭建

    源码之前,了无秘密. 说一句逼格很高的话来镇镇场子. 这两天在看陆舟的<Struts2技术内幕>,一边看脑子一边冒出四个字:相见恨晚.极力推荐想了解Struts2的人看看这本书,之前一直在 ...

  7. Spark2.0.0源码编译

    Hive默认使用MapReduce作为执行引擎,即Hive on mr,Hive还可以使用Tez和Spark作为其执行引擎,分别为Hive on Tez和Hive on Spark.由于MapRedu ...

  8. 搭建Spark源码研读和代码调试的开发环境

    转载自https://github.com/linbojin/spark-notes/blob/master/ide-setup.md 搭建Spark源码研读和代码调试的开发环境 工欲善其事,必先利其 ...

  9. 如何搭建自己的SpringBoot源码调试环境?--SpringBoot源码(一)

    1 前言 这是SpringBoot2.1源码分析专题的第一篇文章,主要讲如何来搭建我们的源码阅读调试环境.如果有经验的小伙伴们可以略过此篇文章. 2 环境安装要求 IntelliJ IDEA JDK1 ...

随机推荐

  1. Android使用webService(发送xml数据的方式,不使用jar包)

    Android使用webService可以用ksoap2.jar包来使用.但是我觉得代码不好理解,而且记不住. 所以我查询了好多资料,以及自己的理解.可以用代码发送http请求(发送xml数据)来访问 ...

  2. 简易数据分析 07 | Web Scraper 抓取多条内容

    这是简易数据分析系列的第 7 篇文章. 在第 4 篇文章里,我讲解了如何抓取单个网页里的单类信息: 在第 5 篇文章里,我讲解了如何抓取多个网页里的单类信息: 今天我们要讲的是,如何抓取多个网页里的多 ...

  3. 原 docker 安装使用 solr

    1.安装solr 7.5 docker solr 官网:https://hub.docker.com/_/solr/ docker pull solr:7.5.0 2.启动solr服务 docker ...

  4. Linux命令大全(简)

    rm--删除文件和目录   -i 删除一个已存在的文件前,提示用户进行确认.   -r 递归的删除目录. mkdir--创建目录 cp--复制文件和目录   -i 在覆盖一个已存在的目录前,提示用户进 ...

  5. Html5web全栈前端开发_angular框架

    昵称领取全套angular视频教程 一.Typescript typescript简称ts,是js语法的超集,很多js新的语法就借鉴了ts语法.ts是由微软团队维护的 1.1 TS简介 1.1.1 G ...

  6. java练习---12

    public class L1106 { public static void main(String[] args) { // TODO Auto-generated method stub Tes ...

  7. 解决win10下MySQL 8.0登录Access denied for user 'root'@'localhost' (using password: YES)的问题

        近些时间在开始学MySQL,安装挺顺利的,按照网上现成的教程就能安装成功.     但是,在输入 mysql -uroot -p     再输入密码时,遇到了这个情况 Access denie ...

  8. 图解Redis之数据结构篇——整数集合

    前言     整数集合(intset)并不是一个基础的数据结构,而是Redis自己设计的一种存储结构,是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时, Redis i ...

  9. 关于STM32F103+ESP8266+阿里云过程之修改SDK连接至阿里云(二)

    继上篇的阿里云物联云平台设置之后,接下来的工作就是对安信可官方给的sdk进行修改 安信可ESP系列集成环境,SDK,aliyun_mqtt_app,下载地址在上一篇博客,https://www.cnb ...

  10. 【vue】------ 路由创建 ------ 【William】

    路由常用的配置项: path:路由请求的路径 component:路由匹配成功后需要渲染的组件或者页面 tag:改变组件内部渲染的元素 假设组件内部渲染的是a标签 tag="li" ...