Spark,IDEA编写Maven项目_manve 项目中使用spark
以下是在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
<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\">
4.0.0
com.example
spark-demo
1.0-SNAPSHOT
2.12.17
3.5.0
11
11
org.apache.spark
spark-core_${scala.version}
${spark.version}
provided
org.apache.spark
spark-sql_${scala.version}
${spark.version}
provided
org.scala-lang
scala-library
${scala.version}
net.alchim31.maven
scala-maven-plugin
4.6.4
compile
testCompile
org.apache.maven.plugins
maven-shade-plugin
3.4.1
package
shade
*:*
META-INF/*.SF
META-INF/*.DSA
META-INF/*.RSA
reference.conf
你的主类路径
四、创建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 )。