当前位置: 代码迷 >> 综合 >> window10 下spark 2.2.3源码编辑
  详细解决方案

window10 下spark 2.2.3源码编辑

热度:72   发布时间:2023-09-23 12:19:09.0

文章目录

  • :rose: spark
    • 1、源码编辑
      • 1.1、环境准备
      • 1.2、官网下载Spark 源码
      • 1.3、使用maven指令编译
      • 1.4、代码测试

? 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/
    

window10 下spark 2.2.3源码编辑

  • 设置maven 参数

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

1.3、使用maven指令编译

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

  • 执行指令

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

    运行结果如下,编译成功
    window10 下spark 2.2.3源码编辑

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

1.4、代码测试

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

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

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

window10 下spark 2.2.3源码编辑

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

window10 下spark 2.2.3源码编辑

  • 执行测试类的时候出现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 configurationat 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 configurationat 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)
    
  相关解决方案