Spark,IDEA编写Maven项目

发布于:2025-05-14 ⋅ 阅读:(11) ⋅ 点赞:(0)

以下是在IDEA中使用Maven构建Spark项目的步骤:

 

一、环境准备

 

1. 安装JDK

 

- 确保IDEA配置了JDK 8+(推荐11+)。

 

2. 安装Maven

 

- 配置Maven环境变量,IDEA中设置Maven路径( File > Settings > Build > Maven )。

 

3. 下载Spark依赖

 

- 无需本地安装Spark,通过Maven引入依赖。

 

二、创建Maven项目

 

1. 新建项目

 

- 在IDEA中选择 Create New Project > Maven > 勾选Create from archetype > 选择 maven-archetype-quickstart ,点击下一步。

 

2. 配置项目信息

 

- 填写GroupId(如 com.example )、ArtifactId(如 spark-demo ),选择存储路径。

 

三、编写 pom.xml 文件

 

添加Spark和Scala依赖(以Spark 3.5.0为例):

 

xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

 

    <groupId>com.example</groupId>

    <artifactId>spark-demo</artifactId>

    <version>1.0-SNAPSHOT</version>

 

    <!-- 声明Scala插件 -->

    <properties>

        <scala.version>2.12.17</scala.version>

        <spark.version>3.5.0</spark.version>

        <maven.compiler.source>11</maven.compiler.source>

        <maven.compiler.target>11</maven.compiler.target>

    </properties>

 

    <!-- 依赖 -->

    <dependencies>

        <!-- Spark Core -->

        <dependency>

            <groupId>org.apache.spark</groupId>

            <artifactId>spark-core_${scala.version}</artifactId>

            <version>${spark.version}</version>

            <!-- 开发时使用local模式,无需打包进最终JAR -->

            <scope>provided</scope>

        </dependency>

        <!-- Spark SQL(按需添加其他模块,如spark-streaming) -->

        <dependency>

            <groupId>org.apache.spark</groupId>

            <artifactId>spark-sql_${scala.version}</artifactId>

            <version>${spark.version}</version>

            <scope>provided</scope>

        </dependency>

        <!-- Scala语言依赖 -->

        <dependency>

            <groupId>org.scala-lang</groupId>

            <artifactId>scala-library</artifactId>

            <version>${scala.version}</version>

        </dependency>

    </dependencies>

 

    <!-- 插件配置 -->

    <build>

        <plugins>

            <!-- Scala编译插件 -->

            <plugin>

                <groupId>net.alchim31.maven</groupId>

                <artifactId>scala-maven-plugin</artifactId>

                <version>4.6.4</version>

                <executions>

                    <execution>

                        <goals>

                            <goal>compile</goal>

                            <goal>testCompile</goal>

                        </goals>

                    </execution>

                </executions>

            </plugin>

            <!-- Maven打包插件(可选,用于生成可执行JAR) -->

            <plugin>

                <groupId>org.apache.maven.plugins</groupId>

                <artifactId>maven-shade-plugin</artifactId>

                <version>3.4.1</version>

                <executions>

                    <execution>

                        <phase>package</phase>

                        <goals>

                            <goal>shade</goal>

                        </goals>

                        <configuration>

                            <filters>

                                <filter>

                                    <artifact>*:*</artifact>

                                    <excludes>

                                        <exclude>META-INF/*.SF</exclude>

                                        <exclude>META-INF/*.DSA</exclude>

                                        <exclude>META-INF/*.RSA</exclude>

                                    </excludes>

                                </filter>

                            </filters>

                            <transformers>

                                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">

                                    <resource>reference.conf</resource>

                                </transformer>

                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">

                                    <mainClass>你的主类路径</mainClass> <!-- 如com.example.SparkApp -->

                                </transformer>

                            </transformers>

                        </configuration>

                    </execution>

                </executions>

            </plugin>

        </plugins>

    </build>

</project>

 

 

四、创建Scala/Java源文件

 

1. 标记源代码目录

 

- 在 src/main 下新建 scala 或 java 目录,右键选择 Mark Directory as > Sources Root。

 

2. 编写Spark应用(Scala示例)

scala

import org.apache.spark.sql.SparkSession

 

object SparkApp {

  def main(args: Array[String]): Unit = {

    // 创建SparkSession(本地模式)

    val spark = SparkSession.builder()

      .appName("IDEA Maven Spark Demo")

      .master("local[*]") // 本地多线程运行

      .getOrCreate()

 

    // 简单示例:读取文本文件

    val df = spark.read.text("src/main/resources/test.txt")

    df.printSchema()

    df.show()

 

    spark.stop()

  }

}

 

 

五、运行与调试

 

1. 本地运行

 

- 直接点击IDEA中的运行按钮, master("local[*]") 会使用本地资源执行。

 

2. 调试

 

- 设置断点,通过IDEA调试功能排查代码问题。

 

3. 打包部署

 

- 执行 mvn clean package 生成JAR包(若使用 shade-plugin ,需确保主类配置正确),上传到Spark集群运行:

bash

spark-submit --class com.example.SparkApp --master yarn ./target/spark-demo-1.0-SNAPSHOT.jar

 

 

注意事项

 

1. 依赖范围(Scope)

 

-  provided 表示依赖仅在开发时使用,部署到集群时需确保集群已安装对应版本的Spark。

 

2. Scala版本兼容

 

- Spark版本与Scala版本需匹配(如Spark 3.5.x对应Scala 2.12/2.13)。

 

3. 日志配置

 

- 可在 src/main/resources 添加 log4j.properties 自定义日志级别。

 

4. 集群部署

 

- 若集群使用HDFS,需将输入/输出路径改为HDFS路径(如 hdfs://nameservice1/input.txt )。


网站公告

今日签到

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