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.SparkSession
object LocalWordCount {
def main(args: Array[String]): Unit = {
// 创建 SparkSession
val 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)
// 停止 SparkSession
spark.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