在 IntelliJ IDEA 中开发 Spark 程序需配置环境、创建项目并添加依赖,以下是详细步骤:
一、准备环境
1. 安装 Java/Scala
- 确保已安装 JDK 1.8+(Spark 3.x 推荐 JDK 11+)和 Scala SDK(版本与 Spark 兼容,如 Spark 3.3.2 对应 Scala 2.12)。
- 在 IDEA 中配置:
- 打开 File > Project Structure > SDKs ,添加 JDK 和 Scala SDK。
2. 下载 Spark 依赖
- 访问 Maven Repository 搜索 spark-core_2.12 和 spark-sql_2.12 (根据 Scala 版本选择),记录最新版本号(如 3.3.2 )。
二、创建 Maven 项目
1. 新建项目
- 打开 IDEA,选择 Create New Project > Maven > Empty Project ,设置项目路径和名称(如 spark-demo )。
2. 添加 Maven 依赖
修改 pom.xml ,添加 Spark 依赖(注意排除 Hadoop 依赖,避免版本冲突):
xml
<dependencies>
<!-- Spark Core -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>3.3.2</version>
<!-- 本地开发时添加,打包部署需移除 -->
<scope>provided</scope>
</dependency>
<!-- Spark SQL(可选) -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>3.3.2</version>
<scope>provided</scope>
</dependency>
</dependencies>
- scope=provided 表示本地开发时使用已安装的 Spark 环境,打包时不包含依赖(部署时需依赖集群的 Spark 运行时)。
三、配置 Spark 运行环境
1. 下载 Spark 二进制包
- 从 Spark 官网 下载对应版本的预编译包(如 spark-3.3.2-bin-hadoop3 ),解压到本地(如 C:\spark )。
2. 设置环境变量
- 在系统环境变量中添加 SPARK_HOME=C:\spark ,并将 %SPARK_HOME%\bin 添加到 PATH 中。
3. IDEA 中配置 Spark 路径
- 打开 File > Settings > Build, Execution, Deployment > Application Servers ,添加 Spark 路径(指向解压后的 spark-3.3.2-bin-hadoop3 目录)。
四、编写 Spark 程序
1. 创建 Scala 类
- 在 src/main/scala 目录下创建包(如 com.example ),新建 Scala 类(如 WordCount.scala )。
2. 编写代码示例(WordCount)
scala
import org.apache.spark
{SparkConf, SparkContext}
object WordCount {
def main(args: Array[String]): Unit = {
// 配置 Spark
val conf = new SparkConf()
.setAppName("WordCount")
.setMaster("local[*]") // 本地调试用,部署时改为 "yarn" 或 "spark://master:7077"
val sc = new SparkContext(conf)
// 读取文本文件
val lines = sc.textFile("input.txt")
val words = lines.flatMap(_.split(" "))
val wordCounts = words.map(word => (word, 1)).reduceByKey(_ + _)
// 保存结果
wordCounts.saveAsTextFile("output")
sc.stop()
}
}
- 关键说明:
- setMaster("local[*]") 用于本地调试,代表使用本地所有线程。
- 实际部署时需移除 setMaster ,或改为集群地址(如 yarn 或 spark://master:7077 )。
五、本地调试运行
1. 配置运行参数
- 点击 IDEA 右上角 Edit Configurations > + > Application ,设置:
- Main Class:填入主类全路径(如 com.example.WordCount )。
- VM Options(可选):添加 -Dspark.driver.host=localhost 避免网络问题。
2. 运行程序
- 将测试文件(如 input.txt )放在项目根目录或指定路径,点击运行按钮,结果会输出到指定目录(如 output )。
六、打包与部署
1. 打包成 JAR
- 在 pom.xml 中添加打包插件:
xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
- 执行 mvn clean package 生成 spark-demo-1.0-SNAPSHOT-jar-with-dependencies.jar 。
2. 提交到集群
bash
spark-submit \
--master yarn \
--deploy-mode cluster \
--class com.example.WordCount \
/path/to/your/jar/spark-demo-1.0-SNAPSHOT-jar-with-dependencies.jar
常见问题
- 依赖冲突:若出现 ClassNotFoundException ,检查 Maven 依赖版本是否与集群 Spark 一致。
- 本地调试失败:确保 setMaster("local[*]") 正确,且文件路径为本地绝对路径。
- Scala 版本不兼容:在 pom.xml 中确认 artifactId 与 Scala 版本匹配(如 spark-core_2.12 对应 Scala 2.12)。