window10 下spark 2.2.3源码编辑

本文详细记录了在Windows环境下,使用IntelliJ IDEA和Maven编译Spark源码的过程,包括环境配置(JDK、Scala、Hadoop)、源码下载、编译指令的执行以及遇到的权限问题和解决办法。最后,通过运行测试类展示了如何解决NoClassDefFoundError及Hadoop相关配置问题。
摘要由CSDN通过智能技术生成

🌹 spark


1、源码编辑

为了深入学习saprk,想看看源码,故自己down了源码,采用maven 编辑了一下。记录代码编译过程以及遇见的问题

1.1、环境准备

  • windows10
  • IDEA2017
  • Maven 3.6.3
  • JDK 1.8 (自Spark 2.2.0起,对Java 7的支持已被删除!)
  • scala 2.11.8 (注意和spark 版本匹配)
  • hadoop 2.7

1.2、官网下载Spark 源码

  • 下载地址(选择自己需要的版本)

    https://archive.apache.org/dist/spark/
    

在这里插入图片描述

  • 设置maven 参数

    set MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"
    
    # 查看
    mvn -version
    

1.3、使用maven指令编译

将下载好后的 saprk.tgz包解压,进入解压目录 ,进入 git base 界面(鼠标右键)

  • 执行指令

    # -DskipTests 跳过测试编译
    ./build/mvn -DskipTests clean package
    

    运行结果如下,编译成功
    在这里插入图片描述

该过程需要一段时间,如果编译失败,重新执行编译指令。重新可能会遇到编译报错,删除某个jar 包权限不够或者正在使用某jar包,此时可以打开任务管理器 找到 java vm 结束任务,重新执行指令

1.4、代码测试

  • 使用idea 打开编辑后的spark 项目文件夹

    等待加载indexing,不用选import sbt project

  • 找一个spark官方deno 运行测试一下

在这里插入图片描述

  • “Rebuild Project” 第一次编译项目的时候可能失败,选中所有,点击这个按钮“Generate Sources and Update Folders For All Projects”

在这里插入图片描述

  • 执行测试类的时候出现Exception in thread “main” java.lang.NoClassDefFoundError: 错误

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

  • 这里如果本地没有配置hadoop环境,会出现下面报错信息

    ERROR Shell: Failed to locate the winutils binary in the hadoop binary path
    java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
    
  • 代码启动前需要指定一下 master[] 不指定会报一下错误

    21/08/19 10:46:04 ERROR SparkContext: Error initializing SparkContext.
    org.apache.spark.SparkException: A master URL must be set in your configuration
    	at org.apache.spark.SparkContext.<init>(SparkContext.scala:376)
    	at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2516)
    	at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:918)
    	at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:910)
    	at scala.Option.getOrElse(Option.scala:121)
    	at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:910)
    	at org.apache.spark.examples.SparkPi$.main(SparkPi.scala:31)
    	at org.apache.spark.examples.SparkPi.main(SparkPi.scala)
    21/08/19 10:46:04 INFO SparkContext: Successfully stopped SparkContext
    Exception in thread "main" org.apache.spark.SparkException: A master URL must be set in your configuration
    	at org.apache.spark.SparkContext.<init>(SparkContext.scala:376)
    	at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2516)
    	at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:918)
    	at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:910)
    	at scala.Option.getOrElse(Option.scala:121)
    	at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:910)
    	at org.apache.spark.examples.SparkPi$.main(SparkPi.scala:31)
    	at org.apache.spark.examples.SparkPi.main(SparkPi.scala)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一年又半

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值