如何在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: ArrayString): 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)。

相关推荐
极光代码工作室15 天前
基于数据仓库的电商数据分析平台
大数据·hadoop·python·spark·数据可视化
JLWcai2025100916 天前
铸造领域树脂砂轮|金利威多场景解决方案,20 + 配方覆盖全需求
mongodb·zookeeper·eureka·spark·rabbitmq·memcached·storm
ACP广源盛1392462567316 天前
GSV9001S@ACP#1080P 级视频处理芯片,物理 AI 普及终端的高性价比选择
大数据·人工智能·分布式·嵌入式硬件·spark
木心术116 天前
AMD Ryzen AI Halo与NVIDIA RTX Spark/DGX Spark两款AI个人主机的差异和优劣势
大数据·人工智能·spark
ACP广源盛1392462567317 天前
GSV5600@ACP#多接口协议转换芯片,物理 AI 便携终端的互联核心
大数据·人工智能·分布式·嵌入式硬件·spark
KaMeidebaby17 天前
卡梅德生物技术快报 | 噬菌体展示 12 肽文库在蛋白表位定位中的应用与实验数据
大数据·人工智能·架构·spark·新浪微博
ACP广源盛1392462567317 天前
GSV2221@ACP#DP 1.4 MST 多屏转换芯片,物理 AI 多模态交互的视觉中枢
大数据·人工智能·嵌入式硬件·gpt·spark
想ai抽18 天前
Spark Executor 因节点内存超限被杀的分析与应对
大数据·性能优化·spark
simidagogogo18 天前
生产环境推荐系统最隐蔽的坑:Training-Serving Skew 详解与实战
算法·spark·推荐算法
ACP广源盛1392462567318 天前
GSV6155@ACP#DP 1.4a 重定时器芯片,物理 AI 信号长距传输的稳定保障
大数据·人工智能·分布式·嵌入式硬件·spark