Spark,IDEA编写Maven项目

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

一、环境准备

  1. 安装JDK
  • 确保IDEA配置了JDK 8+(推荐11+)。
  1. 安装Maven
  • 配置Maven环境变量,IDEA中设置Maven路径( File > Settings > Build > Maven )。
  1. 下载Spark依赖
  • 无需本地安装Spark,通过Maven引入依赖。

二、创建Maven项目

  1. 新建项目
  • 在IDEA中选择 Create New Project > Maven > 勾选Create from archetype > 选择 maven-archetype-quickstart ,点击下一步。
  1. 配置项目信息
  • 填写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。
  1. 编写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[*]") 会使用本地资源执行。
  1. 调试
  • 设置断点,通过IDEA调试功能排查代码问题。
  1. 打包部署
  • 执行 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。
  1. Scala版本兼容
  • Spark版本与Scala版本需匹配(如Spark 3.5.x对应Scala 2.12/2.13)。
  1. 日志配置
  • 可在 src/main/resources 添加 log4j.properties 自定义日志级别。
  1. 集群部署
  • 若集群使用HDFS,需将输入/输出路径改为HDFS路径(如 hdfs://nameservice1/input.txt )。
相关推荐
ZHOU_WUYI2 小时前
Apache Spark 集群部署与使用指南
大数据·spark·apache
随心............19 小时前
在开发过程中遇到问题如何解决,以及两个经典问题
hive·hadoop·spark
Q26433650232 天前
【有源码】基于Python与Spark的火锅店数据可视化分析系统-基于机器学习的火锅店综合竞争力评估与可视化分析-基于用户画像聚类的火锅店市场细分与可视化研究
大数据·hadoop·python·机器学习·数据分析·spark·毕业设计
潘达斯奈基~2 天前
spark性能优化1:通过依赖关系重组优化Spark性能:宽窄依赖集中处理实践
大数据·性能优化·spark
蒙特卡洛的随机游走3 天前
Spark核心数据(RDD、DataFrame 和 Dataset)
大数据·分布式·spark
蒙特卡洛的随机游走3 天前
Spark的宽依赖与窄依赖
大数据·前端·spark
Lansonli3 天前
大数据Spark(六十九):Transformation转换算子intersection和subtract使用案例
大数据·分布式·spark
励志成为糕手3 天前
宽依赖的代价:Spark 与 MapReduce Shuffle 的数据重分布对比
大数据·spark·mapreduce·分布式计算·sortshuffle
weixin_525936334 天前
部分Spark SQL编程要点
大数据·python·sql·spark
智海观潮4 天前
学好Spark必须要掌握的Scala技术点
大数据·spark·scala