3. 开发环境搭建:JDK、Scala、Spark、Maven安装配置、IDEA插件、本地模式与集群模式
本章将指导你完成基于Spark的贷后预警实时计算所需的全部开发环境搭建。一个稳定、版本匹配的开发环境是后续编码与调试的基础。我们将按照“基础依赖 → 核心框架 → 构建工具 → IDE集成 → 运行模式”的路径逐步配置。
3.1 环境版本选型与兼容性矩阵
Spark生态各组件版本之间存在严格的兼容性要求。下表列出了本教程推荐的版本组合,请严格遵循以避免运行时类冲突或API不兼容问题。
| 组件 | 推荐版本 | 说明 |
|---|---|---|
| JDK | 1.8.0_202 (8u202) | Spark 3.x 官方推荐;避免使用更高版本以减少兼容风险 |
| Scala | 2.12.17 | Spark 3.3.x 默认编译版本;与Spark二进制包一致 |
| Spark | 3.3.2 (Hadoop 2.7) | 稳定版,支持Kafka 0.10+,适合贷后实时流处理 |
| Maven | 3.8.6 | 构建管理;与Scala插件兼容性好 |
| IntelliJ IDEA | 2023.2+ (Ultimate) | 支持Scala插件、Spark应用调试 |
版本陷阱提示: 不要使用JDK 11+搭配Spark 3.3.x,虽然可以运行,但部分Scala反射API在JDK 11下会抛出模块化访问警告,影响贷后预警作业的稳定性。始终优先使用JDK 8。
3.2 JDK 安装与配置
JDK是Spark运行的基础。安装后必须正确设置 JAVA_HOME 环境变量。
- 下载:从Oracle Archive或Adoptium获取JDK 8u202,选择Windows x64或Linux x64版本。
- 安装路径:建议安装到无空格的路径,例如
C:\Java\jdk1.8.0_202(Windows)或/usr/lib/jvm/java-8-openjdk-amd64(Linux)。 - 环境变量配置:
# Windows (系统变量) JAVA_HOME = C:\Java\jdk1.8.0_202 PATH 追加 = %JAVA_HOME%\bin # Linux (~/.bashrc 或 /etc/profile) export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH - 验证:打开终端执行
java -version,输出应包含1.8.0_202。
3.3 Scala 安装与配置
Spark虽然提供了Java和Python API,但Scala是其原生语言,贷后预警的流处理逻辑使用Scala编写能获得最佳性能和最全的API支持。
- 下载:从Scala官网下载
scala-2.12.17.zip或.tgz包。 - 解压:解压到
C:\Scala\scala-2.12.17或/opt/scala-2.12.17。 - 环境变量:
SCALA_HOME = C:\Scala\scala-2.12.17 PATH 追加 = %SCALA_HOME%\bin - 验证:执行
scala -version,确认显示Scala code runner version 2.12.17。
3.4 Spark 安装与目录结构
Spark采用预编译二进制包安装,无需从源码编译。下载时选择 spark-3.3.2-bin-hadoop2.7.tgz。
- 解压:解压到
C:\Spark\spark-3.3.2-bin-hadoop2.7或/opt/spark。 - 设置 SPARK_HOME:
SPARK_HOME = C:\Spark\spark-3.3.2-bin-hadoop2.7 PATH 追加 = %SPARK_HOME%\bin - 验证:执行
spark-shell,应进入Scala交互式环境并显示Spark版本信息。
Spark目录结构的关键子目录说明:
| 目录/文件 | 用途 |
|---|---|
bin/ |
启动脚本(spark-submit, spark-shell, pyspark) |
conf/ |
配置文件模板(spark-defaults.conf, log4j.properties) |
jars/ |
Spark核心及依赖JAR包 |
examples/ |
官方示例代码,可参考学习 |
sbin/ |
集群启停脚本(start-all.sh, stop-all.sh) |
3.5 Maven 安装与配置
Maven用于管理贷后预警项目的依赖和构建。配置时需指定本地仓库路径和阿里云镜像以加速依赖下载。
- 下载:从Maven官网下载
apache-maven-3.8.6-bin.zip。 - 解压:解压到
C:\Maven\apache-maven-3.8.6。 - 环境变量:
MAVEN_HOME = C:\Maven\apache-maven-3.8.6 PATH 追加 = %MAVEN_HOME%\bin - 配置 settings.xml(位于
%MAVEN_HOME%\conf\):<settings> <localRepository>C:/Users/你的用户名/.m2/repository</localRepository> <mirrors> <mirror> <id>aliyunmaven</id> <mirrorOf>central</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> </mirrors> </settings> - 验证:执行
mvn -version,确认Maven版本和Java版本。
3.6 IntelliJ IDEA 插件安装
IDEA是开发Spark应用的首选IDE。需要安装以下关键插件:
- Scala插件:支持Scala语法高亮、代码补全、编译运行。
- Maven Helper:分析依赖冲突,解决贷后预警项目中Spark与Kafka客户端的JAR包冲突。
- Rainbow Brackets:Scala函数式编程中括号嵌套较多,该插件可显著提升代码可读性。
安装步骤:File → Settings → Plugins → Marketplace,搜索并安装上述插件,重启IDEA。
3.7 本地模式与集群模式对比
Spark支持多种运行模式。在贷后预警开发的不同阶段,我们会切换使用本地模式和集群模式。
开发阶段建议: 在本地模式下编写和调试流处理逻辑,使用
local[*] 模拟并行度;在测试和上线阶段切换到YARN集群模式,利用集群资源处理真实贷后数据量。
下图展示了本地模式与集群模式的核心架构差异:
3.8 本地模式快速验证
完成上述安装后,通过一个简单的Spark作业验证环境是否正常。在IDEA中创建Maven项目,添加以下依赖:
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>3.3.2</version>
</dependency>
</dependencies>
编写一个简单的WordCount程序,以本地模式运行:
import org.apache.spark.sql.SparkSession
object LocalModeTest {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder()
.appName("LocalModeTest")
.master("local[*]") // 本地模式,使用所有可用核心
.getOrCreate()
val data = Seq("贷后预警", "实时计算", "Spark", "贷后预警")
val df = spark.createDataFrame(data.map(Tuple1(_))).toDF("word")
df.createOrReplaceTempView("words")
val result = spark.sql("SELECT word, COUNT(*) AS cnt FROM words GROUP BY word")
result.show()
spark.stop()
}
}
运行后控制台应输出分组统计结果,表明环境搭建成功。
3.9 集群模式配置要点
当贷后预警作业需要处理真实业务数据时,需切换到YARN集群模式。配置步骤如下:
- 配置Hadoop:确保
HADOOP_CONF_DIR指向包含core-site.xml和yarn-site.xml的目录。 - 配置Spark:复制
spark-env.sh.template为spark-env.sh,添加:export HADOOP_CONF_DIR=/etc/hadoop/conf export SPARK_MASTER_HOST=your-master-node - 提交作业:使用
spark-submit指定YARN模式:spark-submit \ --class com.example.LoanWarningJob \ --master yarn \ --deploy-mode cluster \ --executor-memory 4g \ --num-executors 10 \ target/loan-warning-1.0-SNAPSHOT.jar
贷后预警调优提示: 在集群模式下,建议将
spark.sql.shuffle.partitions 设置为 executor数量 × 核心数 × 2,以充分利用并行度处理贷后流水数据。
3.10 环境验证清单
完成所有配置后,使用下表逐项检查,确保环境就绪:
| 检查项 | 验证命令 | 预期结果 |
|---|---|---|
| JDK | java -version |
1.8.0_202 |
| Scala | scala -version |
2.12.17 |
| Spark | spark-shell --version |
3.3.2 |
| Maven | mvn -version |
3.8.6 |
| 本地模式 | 运行LocalModeTest | 输出分组统计结果 |
| 集群模式 | spark-submit --master yarn --version |
显示Spark版本且无连接错误 |