如何在idea中写spark程序。

发布于:2025-05-07 ⋅ 阅读:(17) ⋅ 点赞:(0)

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


网站公告

今日签到

点亮在社区的每一天
去签到