M2 MacbookPro配置Spark源码运行环境

2023-09-21 10:40:33

零、版本信息

MacBook:MacBook Pro M2

JDK:1.8.0_381

Scala:2.12.15

Maven:3.6.3

Homebrew:4.1.12(可选,下载Git需要)

Git:2.42.0(下载Spark源码需要)

Spark:3.2.5

整体配置流程参考@来自遥远的水星【Spark源码01【搭建Spark源码调试环境】】

一、JDK安装

参考一站式JDK安装与配置(Windows、MacOS(arm64与inter)、Linux)_zulu jdk_javgo.cn的博客-CSDN博客

1,安装地址

Java Downloads | Oracle

 

2,跳过Oracle登录限制

参考jdk下载总需要登录Oracle官网怎么办?_下载jdk要oracle账户_金玉满堂@bj的博客-CSDN博客

工具地址:oracle.com passwords - BugMeNot.

3,配置环境

1)查看JDK安装是否成功

java -version

2)查看安装目录

方法一:聚焦搜索 /Library/Java/JavaVirtualMachines

参考如何在Mac中找到jdk的安装路径_mac查看jdk安装位置_乌海黑的博客-CSDN博客

方法二

/user/libexec/java_home -V

3)配置路径

// 1,编辑文件
vi ~/.zshrc

// 2,输入配置
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
PATH=$JAVA_HOME/bin:$PATH:.
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export JAVA_HOME
export PATH
export CLASSPATH

// 3,激活
source ~/.zshrc

// 4,查看配置
java -version

二、Scala安装

1,安装地址

Scala 2.12.15 | The Scala Programming Language

 

2,配置环境

下载的压缩包解压后移动到目标目录

// 1,编辑文件
vi ~/.zshrc

// 2,输入配置
export SCALA_HOME=安装包地址
export PATH=$PATH:$SCALA_HOME/bin

// 3,激活
source ~/.zshrc

三、Maven安装

1,安装地址

Index of /dist/maven/maven-3/3.6.3/binaries

2,配置环境

// 1,编辑文件
vi ~/.zshrc

// 2,输入配置
export M2_HOME=安装包地址
export PATH=$PATH:$M2_HOME/bin

// 3,激活
source ~/.zshrc

// 4,验证
mvn -v

// 5,setting.xml 
配置阿里云镜像
<mirrors>
      <mirror>
      <id>nexus-aliyun</id>
      <mirrorOf>central</mirrorOf>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
      </mirror>
</mirrors>

配置本地仓库地址
<localRepository>/Users/didi/mine/software/maven/repository</localRepository>

四、Homebrew、Git安装(可选)

参考【macOS】mac电脑M2芯片安装Homebrew 最简单的方法_macos安装homebrew_鱼仔是个NaN的博客-CSDN博客

// 1,下载命令
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

// 2,查看Homebrew版本
brew -v

// 3,安装git
brew install git

// 4,查看git版本
git version

 

五、下载&编译Spark源码

// 1,创建spark源码存储目录,并将其设置为当前文件路径
/software/idea/code/spark

// 2,下载spark源码
git clone https://github.com/apache/spark

// 3,进入/software/idea/code/spark/spark 目录

// 4,查看远程分支
git branch -a 

// 5,切换至saprk3.2
git checkout remotes/origin/branch-3.2 

// 6,编译源码
mvn clean package  -Phive -Phive-thriftserver -Pyarn -DskipTests

编译成功!

进入spark-shell

./bin/spark-shell

对spark-shell感兴趣的朋友可以跟着官方文档的demo跑一下看看

Quick Start - Spark 3.5.0 Documentation

 

六、导入IDEA&测试

1,导入源码

Menu -> File -> Open -> {spark dir}/pom.xml -> Open as Project

如果右边import包时飘红,但是示例可以正常运行,可以试试这里的方法IDEA “Cannot resolve symbol XXXX” 解决办法 (4种解决方案)_idea cannot resolve symbol_北街风的博客-CSDN博客

我是中途切换了一次IDEA版本(从2023.2切换到2020.3),删除.idea目录,重新打开项目,Open as Project后问题解决

2,配置测试用例Application(包括主类、VM options等)

详细参考【spark2】【源码学习】【环境编译】在idea导入spark源码,执行example并debug_spark example idea_kyle0349的博客-CSDN博客

// VM options
-Dspark.master=local

我自己的配置结果如下(不同IDEA版本,配置界面稍有不同)

3,debug

跟spark相关的【java.lang.ClassNotFoundException】,原因都是example module中pom.xml spark的依赖scope是provided。

如果上面“Include dependencies with Provided scope”没有起作用

最简单的方法,将pom文件中所有provided行注释掉

还没有起作用的话,试试刷新缓存

4,安装Antlr插件

以下内容来自@来自遥远的水星【Spark源码01【搭建Spark源码调试环境】】

1)cmd + o 搜索SqlBase.g4文件,会提示你安装ANTLR v4插件, 重启idea 

2)配置ANTLR V4插件

放一张我这边配置完成后的截图

完结撒花✿✿ヽ(°▽°)ノ✿

更多推荐

ARTS 打卡 第一周,初试ARTS

前言认识三掌柜的想必都知道,我持续创作技术博客已经有6年时间了,固定每个月发布不少于6篇博文。同时,自己作为一名热爱分享的开发者,像ARTS这样的活动自然少不了我。由于我是打算挤在一起分享,之前都是做了本地文档记录,所以直接把内容整合起来即可,那么接下来就开启我的第一周打卡咯。ARTS是什么?ARTS其实是由四个部分组

ngx_memalign是在 Nginx 中使用的一个内存分配函数,它的作用是根据指定的对齐方式和大小,分配一块对齐的内存

ngx_memalignngx_memalign是在Nginx中使用的一个内存分配函数。它的作用是根据指定的对齐方式和大小,分配一块对齐的内存。这个函数在Nginx的内存管理系统中使用得比较广泛,尤其是在处理大块数据时,可以提高内存访问的效率。具体的函数原型如下:void*ngx_memalign(size_talig

Apache Spark 的基本概念

ApacheSpark是一种快速、可扩展、通用的数据处理引擎。它是一种基于内存的计算框架,支持分布式数据处理、机器学习、图形计算等多种计算任务。与传统的HadoopMapReduce相比,Spark具有更高的性能和更广泛的应用场景。Spark中的基本概念包括:1.ResilientDistributedDatasets

Javas | DecimalFormat类、BigDecimal类、Random类

目录:1.DecimalFormat类2.BigDecimal类3.Random类4.需求:编写程序,生成5个不重复的随机数1.DecimalFormat类DecimalFormat是NumberFormat的一个具体子类,用于格式十进制数字。/***关于数字的格式化*/publicclassDecimalFormat

滚雪球学Java(28):轻松掌握数组:访问和遍历技巧

🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!前言在Java编程中,数组是一种常用的数据结构。它在存储和处理数据时具有很高的效率,能够方便地进行访问和遍历。本文将介绍数组的访问和遍历技巧,帮助读者更加深入地了解Java数

单片机C语言实例:23、串口通讯

一、轮询发送程序实例1:#include<reg52.h>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include"delay.h"/*------------------------------------------------函数声明---------------------------

Vue记录(下篇)

Vuexgetters配置项*Count.vue<template><div><h1>当前求和为:{{$store.state.sum}}</h1><h3>当前求和的10倍为:{{$store.getters.bigSum}}</h3><selectv-model.number="n"><optionvalue="1"

vue+springboot,easyexcel的excel文件下载

文章目录1.效果展示1.1前端界面1.2下载的excel2.思路介绍3.前端代码展示4.后端代码展示5.核心代码解释1.效果展示excel文件单一sheet,多sheet导出本文主要介绍如何使用easyexcel,配合前端导出Excel文件。同时提供Excel的两种导出形式:单一sheet,多sheet。1.1前端界面

02-HTML常用标签

02-HTML常用标签2.1标签的构成标签由<、>、/、英文单词或字母组成。并且把标签中<>包括起来的英文单词或字母称为标签名常见标签由两部分组成,我们称之为:双标签。前部分叫开始标签,后部分叫结束标签,两部分之间包裹内容就是标签名。少数标签由一部分组成,我们称之为:单标签。自成一体,无法包裹内容(比如:<hr>、<b

Git 基本操作【本地仓库与远程仓库的推送、克隆和拉取】

文章目录一、Git简介二、Git的下载安装三、Git常规命令四、新建本地仓库五、本地分支操作六、Git远程仓库七、远程仓库克隆、抓取和拉取八、总结九、学习交流一、Git简介Git是分布式版本控制系统(DistributedVersionControlSystem,简称DVCS),分为两种类型的仓库:本地仓库和远程仓库工

51单片机1【单片机到底是什么】

1.从电路到集成电路1.电路发展变化的趋势(1)功率:电子设备·越来越省电,待机时间越来越长,工作电压越来越低。(2)体积:体积越来越小(3)功能:功能越来越强大2.微器件(1)电路的核心:开关控制,倍率控制(2)电子管,晶体管3.集成电路(IC,芯片)的出现(1)IC(integratedcircuit,集成电路),

热文推荐