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

相关推荐
MyikJ21 小时前
Java互联网大厂面试:从Spring Boot到Kafka的技术深度探索
java·spring boot·微服务·面试·spark·kafka·spring security
向哆哆21 小时前
Java 大数据处理:使用 Hadoop 和 Spark 进行大规模数据处理
java·hadoop·spark
阿里云大数据AI技术1 天前
Fusion引擎赋能:流利说如何用阿里云Serverless Spark实现数仓计算加速
大数据·人工智能·阿里云·spark·serverless·云计算
Matrix701 天前
大数据量下的数据修复与回写Spark on Hive 的大数据量主键冲突排查:COUNT(DISTINCT) 的陷阱
大数据·hive·spark
weixin_307779131 天前
Apache SeaTunnel 引擎深度解析:原理、技术与高效实践
大数据·flink·spark·数据库开发·etl
wuli玉shell2 天前
spark shuffle的分区支持动态调整,而hive不支持
大数据·hive·spark
程序员阿龙2 天前
基于大数据的个性化购房推荐系统设计与实现(源码+定制+开发)面向房产电商的智能购房推荐与数据可视化系统 基于Spark与Hive的房源数据挖掘与推荐系统设计
大数据·数据挖掘·spark·用户画像·hadoop生态·spark mllib·房源数据爬虫
NON-JUDGMENTAL3 天前
PySpark 中使用 SQL 语句和表进行计算
python·spark
itachi-uchiha3 天前
Docker部署Spark大数据组件:配置log4j日志
spark
伟笑3 天前
前端使用 spark-md5 实现大文件切片上传
大数据·前端·spark