步驟 1:創建 Maven 項目
- 打開 IntelliJ IDEA,選擇?File > New > Project。
- 選擇?Maven,勾選?Create from archetype,選擇?
org.apache.maven.archetypes:maven-archetype-quickstart
。 - 填寫?GroupId(如?
com.example
)和?ArtifactId(如?spark-example
),點擊?Next。 - 配置 Maven 設置,點擊?Finish。
步驟 2:添加 Spark 依賴
在?pom.xml
?中添加以下依賴:
xml
<dependencies><!-- Spark Core --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>3.4.1</version> <!-- 根據你的 Spark 版本調整 --></dependency><!-- Spark SQL (可選) --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-sql_2.12</artifactId><version>3.4.1</version></dependency><!-- Spark Streaming (可選) --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-streaming_2.12</artifactId><version>3.4.1</version></dependency>
</dependencies>
步驟 3:編寫 Spark 程序
創建一個 Scala 或 Java 類,編寫 Spark 程序。以下是一個簡單的 Scala 示例:
scala
import org.apache.spark.sql.SparkSessionobject WordCount {def main(args: Array[String]): Unit = {// 創建 SparkSessionval spark = SparkSession.builder().appName("WordCount").master("local[*]") // 本地模式,使用所有 CPU 核心.getOrCreate()// 讀取文本文件val textFile = spark.sparkContext.textFile("src/main/resources/input.txt")// 計算單詞計數val counts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)// 輸出結果counts.collect().foreach(println)// 停止 SparkSessionspark.stop()}
}
步驟 4:配置運行環境
-
添加 Scala 支持:
- 若項目未自動識別 Scala,右鍵點擊項目 >?Add Framework Support?> 勾選?Scala。
- 下載并配置 Scala SDK(版本需與 Spark 兼容,如 Scala 2.12.x)。
-
設置運行參數:
- 點擊?Run > Edit Configurations。
- 添加新的?Application?配置,設置:
- Main class:
WordCount
(或你的主類名)。 - JVM options(可選):
-Xmx2g
(設置最大堆內存)。
- Main class:
步驟 5:運行程序
- 在項目根目錄下創建?
src/main/resources/input.txt
?文件,添加測試文本。 - 點擊運行按鈕或使用快捷鍵(如?
Shift + F10
)執行程序。 - 查看控制臺輸出,驗證單詞計數結果。
步驟 6:打包并提交到集群(可選)
如果需要在 Spark 集群上運行,需打包項目:
-
在?
pom.xml
?中添加打包插件:xml
<build><plugins><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></configuration></execution></executions></plugin></plugins> </build>
-
執行?
mvn clean package
?生成 JAR 文件。 -
使用?
spark-submit
?提交到集群:bash
spark-submit \--class "WordCount" \--master yarn \ # 或 "spark://host:port"--deploy-mode cluster \/path/to/your-jar/spark-example-1.0-SNAPSHOT.jar