如何在idea中写spark程序。

在 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。

  1. 下载 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 )。
  1. 添加 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 )。
  1. 设置环境变量
  • 在系统环境变量中添加 SPARK_HOME=C:\spark ,并将 %SPARK_HOME%\bin 添加到 PATH 中。
  1. 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 )。
  1. 编写代码示例(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 避免网络问题。

  1. 运行程序
  • 将测试文件(如 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 。
  1. 提交到集群

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)。

相关推荐
Q26433650236 小时前
【有源码】基于Python与Spark的火锅店数据可视化分析系统-基于机器学习的火锅店综合竞争力评估与可视化分析-基于用户画像聚类的火锅店市场细分与可视化研究
大数据·hadoop·python·机器学习·数据分析·spark·毕业设计
潘达斯奈基~7 小时前
spark性能优化1:通过依赖关系重组优化Spark性能:宽窄依赖集中处理实践
大数据·性能优化·spark
蒙特卡洛的随机游走1 天前
Spark核心数据(RDD、DataFrame 和 Dataset)
大数据·分布式·spark
蒙特卡洛的随机游走1 天前
Spark的宽依赖与窄依赖
大数据·前端·spark
Lansonli1 天前
大数据Spark(六十九):Transformation转换算子intersection和subtract使用案例
大数据·分布式·spark
励志成为糕手1 天前
宽依赖的代价:Spark 与 MapReduce Shuffle 的数据重分布对比
大数据·spark·mapreduce·分布式计算·sortshuffle
weixin_525936332 天前
部分Spark SQL编程要点
大数据·python·sql·spark
智海观潮2 天前
学好Spark必须要掌握的Scala技术点
大数据·spark·scala
数智顾问3 天前
破解 Shuffle 阻塞:Spark RDD 宽窄依赖在实时特征工程中的实战与未来
大数据·分布式·spark
想ai抽3 天前
吃透大数据算法-算法地图(备用)
大数据·数据库·spark