Spark Local 模式是一種在單臺機器上運行 Spark 應用程序的模式,無需搭建分布式集群,適合開發調試、學習以及運行小規模數據處理任務。以下為你詳細介紹該模式:
特點
- 簡易性:無需額外配置分布式集群,在單機上就能快速啟動和運行 Spark 應用,便于開發者快速驗證代碼邏輯。
- 資源受限:由于在單機上運行,其資源(如 CPU、內存)依賴于單機配置,不適合處理大規模數據。
- 開發調試便利:在開發過程中,可方便地進行代碼調試和問題排查。
運行方式
Python 示例
以下是使用 Python 和 PySpark 在 Local 模式下運行 WordCount 程序的示例:
from pyspark.sql import SparkSession# 創建 SparkSession
spark = SparkSession.builder \.appName("LocalWordCount") \.master("local[*]") \.getOrCreate()# 讀取文本文件
lines = spark.read.text("file:///path/to/your/textfile.txt").rdd.map(lambda r: r[0])# 進行單詞計數
counts = lines.flatMap(lambda x: x.split(' ')) \.map(lambda x: (x, 1)) \.reduceByKey(lambda a, b: a + b)# 輸出結果
output = counts.collect()
for (word, count) in output:print("%s: %i" % (word, count))# 停止 SparkSession
spark.stop()
在上述代碼中:
master("local[*]")
?表示使用本地模式運行,[*]
?代表使用所有可用的 CPU 核心。file:///path/to/your/textfile.txt
?是本地文件的路徑。
Scala 示例
以下是使用 Scala 在 Local 模式下運行 WordCount 程序的示例:
scala
提交作業
import org.apache.spark.sql.SparkSessionobject LocalWordCount {def main(args: Array[String]): Unit = {// 創建 SparkSessionval spark = SparkSession.builder().appName("LocalWordCount").master("local[*]").getOrCreate()// 讀取文本文件val lines = spark.read.textFile("file:///path/to/your/textfile.txt").rdd// 進行單詞計數val counts = lines.flatMap(_.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)// 輸出結果counts.collect().foreach(println)// 停止 SparkSessionspark.stop()}
}
Python 代碼
在終端中使用?spark-submit
?提交 Python 代碼:
bash
spark-submit --master local[*] /path/to/your/wordcount.py
Scala 代碼
若使用 Scala 代碼,需先將代碼打包成 JAR 文件,再使用?spark-submit
?提交:
bash
spark-submit --master local[*] --class com.example.LocalWordCount