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

本篇就来介绍下如何在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. MongoDB 启动时关于 NUMA 警告 的分析----(To avoid performance problems)

    1. 需求描述 观察MongoDB的启动Log,会看到一个关于  NUMA 的警告 和 优化建议 --17T17:: I CONTROL [initandlisten] ** WARNING: You ...

  2. [LeetCode] 107 Binary Tree Level Order Traversal II (easy)

    原题 层序遍历,从自底向上按层输出. 左→右→中 解法一 : DFS,求出自顶向下的,最后返回时反转一下. class Solution { public: vector<vector<i ...

  3. SQL SERVER Suspect(质疑/挂起) 状态恢复

    数据库服务器,在断电时,偶尔会出现Suspect状态,导致数据库无法使用. 解决办法如下: 数据库名带‘[]’可以避免库名中带‘.’等特殊符号的情况. USE [master]GOALTER DATA ...

  4. Java EE.Servlet.生成响应

    Servlet的核心职责就是根据客户端的请求生成动态响应. 1.编码类型 2.流操作(下载文件) servlet支持两种格式的输入/输出流.一种是字符输入输出流.另一种是字节输入输出流. 3.重定向

  5. Maven重新下载未下载完成的jar包

    使用maven下载jar包,经常会遇到下载失败的情况,如果失败的jar包过多,或是不清楚到底有那些jar包在下载过程中出现了问题.可通过maven命令重新批量下载未成功的jar包. 1,打开cmd , ...

  6. css3系列之transform详解translate

    translate translate这个参数的,是transform 身上的,那么它有什么用呢? 其实他的作用很简单,就是平移,参考自己的位置来平移 translate() translateX() ...

  7. poj 3714 寻找最近点对

    参考自<编程之美>169页,大概原理就是把区间分成两部分,然后递归找每一部分中最近的点对,还有一种情况就是这个点对分属于这两部分,然后选两部分中的部分点枚举即可,取其最小值. //2013 ...

  8. mysql5.7.18-winx64安装

    win10下装mysql-5.7.18-winx64 步骤1 官网下载地址:https://dev.mysql.com/downloads/mysql/ 选择手动安装版: 解压到D盘mysql文件夹下 ...

  9. 树莓派 + Windows IoT Core 搭建环境监控系统

    前言:Windows IoT 是微软为嵌入式开发板设计的一种物联网操作系统,运行Windows UWP(C# 开发),可以设计出丰富的交互界面,驱动GPIO,连接一些传感器做有意思的事,本文详细介绍如 ...

  10. 用命令将本地jar包导入到本地maven仓库

    [**前情提要**]在日常开发过程中,我们总是不可避免的需要依赖某些不在中央仓库,同时也不在本地仓库中的jar包,这是我们就需要使用命令行将需要导入本地仓库中的jar包导入本地仓库,使得项目依赖本地仓 ...