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 )。
相关推荐
yumgpkpm1 小时前
腾讯TBDS和Cloud Data AI CMP 比较的缺陷在哪里?
hive·hadoop·elasticsearch·zookeeper·spark·kafka·hbase
乌恩大侠8 小时前
AI-RAN 在 Spark上部署 Sionna-RK
大数据·分布式·spark
pale_moonlight2 天前
九、Spark基础环境实战((上)虚拟机安装Scala与windows端安装Scala)
大数据·分布式·spark
青云交3 天前
Java 大视界 -- Java 大数据在智能物流无人配送车路径规划与协同调度中的应用
java·spark·路径规划·大数据分析·智能物流·无人配送车·协同调度
yumgpkpm4 天前
腾讯云TBDS与CDH迁移常见问题有哪些?建议由CDH迁移到CMP 7.13 平台(类Cloudera CDP,如华为鲲鹏 ARM 版)
hive·hadoop·zookeeper·flink·spark·kafka·hbase
bigdata-rookie5 天前
Spark 部署模式
大数据·分布式·spark
sheji34166 天前
【开题答辩全过程】以 基于Spark的药品库存可视化分析系统为例,包含答辩的问题和答案
大数据·分布式·spark
larance6 天前
spark-submit 常用方式
大数据·spark
A尘埃6 天前
Spark基于内存计算的数据处理
大数据·分布式·spark
bigdata-rookie6 天前
Flink Checkpoint 和 Spark Checkpoint 的区别
大数据·flink·spark