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 )。
相关推荐
Light6013 小时前
从“报告”到“能力”——构建智能化、可审计的数据治理闭环——领码 SPARK 数据质量平台白皮书
大数据·分布式·spark
火龙谷14 小时前
day2-采集数据
spark
大厂技术总监下海2 天前
从Hadoop MapReduce到Apache Spark:一场由“磁盘”到“内存”的速度与范式革命
大数据·hadoop·spark·开源
麦麦大数据2 天前
F052pro 基于spark推荐的中医古籍知识图谱可视化推荐系统|spark mlib|hadoop|docker集群
docker·spark-ml·spark·知识图谱·可是还·中医推荐·ehcarts
巧克力味的桃子2 天前
Spark 课程核心知识点复习汇总
大数据·分布式·spark
Light602 天前
智能重构人货场:领码SPARK破解快消行业增长困局的全景解决方案
spark·数字化转型·ai大模型·智能营销·快消行业·供应链优化
叫我:松哥3 天前
基于大数据和深度学习的智能空气质量监测与预测平台,采用Spark数据预处理,利用TensorFlow构建LSTM深度学习模型
大数据·python·深度学习·机器学习·spark·flask·lstm
火龙谷4 天前
day1-部署集群
spark
火龙谷4 天前
day3-构建数仓
spark
阿里云大数据AI技术4 天前
迅雷基于阿里云 EMR Serverless Spark 实现数仓资源效率与业务提升
spark