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: ArrayString): 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 )。
相关推荐
用户3610588626129 小时前
Spark 核心之 Standalone-Cluster 模式:原理、流程与源码级深度拆解
spark
java1234_小锋16 小时前
【免费】基于Spark实时金融交易风险监控与预测系统(Java版本+可视化大屏+Kafka+SpringBoot+Vue3) 锋哥原创出品,必属精品
大数据·spark·kafka·金融交易风险监控与预测
阿里云大数据AI技术1 天前
EMR Serverless Spark 基于 MinHash-LSH 实现 PB 级文本语义去重 4 倍加速
大数据·人工智能·spark
牛奶咖啡132 天前
大数据Hadoop运维应用实践——Spark与hadoop集群的整合_独立模式下Spark集群的安装部署
大数据·spark·spark是什么?有啥用?·spark的优缺点·spark的适用与不适用场景·独立模式下的spark集群部署·启动并测试spark集群
BD_Marathon5 天前
Spark数据源
大数据·ajax·spark
BD_Marathon5 天前
Dataset
spark
java1234_小锋7 天前
【免费】基于Spark实时电商用户行为分析与预测(Java版本+可视化大屏+Kafka+SpringBoot+Vue3) 锋哥原创出品,必属精品
java·spark·kafka·实时电商用户行为分析与预测系统
abcy0712139 天前
spark核心组件
flink·spark
极光代码工作室11 天前
基于Spark的日志监控与分析平台
大数据·hadoop·python·spark·数据可视化
Leo.yuan11 天前
数据仓库建设怎么做?从源数据到分析报表全流程讲清
大数据·分布式·spark