为pyspark设置SparkContext

19 投票
3 回答
73447 浏览
提问于 2025-04-18 15:02

我刚接触 sparkpyspark,想请教一下,SparkContext 这个参数到底是干嘛用的?我该如何为我的 Python 应用设置 spark_context 呢?

3 个回答

4

SparkContext对象就像是你的程序的指挥官。它负责协调你在集群上运行应用程序的各个进程。

当你运行PySpark命令行时,系统会自动创建一个默认的SparkContext对象,变量名是sc。

如果你要创建一个独立的应用程序,你需要在你的脚本中像下面这样初始化SparkContext对象:

sc = SparkContext("local", "My App")

这里第一个参数是集群的地址,第二个参数是你应用程序的名字。

我写了一篇文章,介绍了PySpark和Apache的基础知识,你可能会觉得有用:https://programmathics.com/big-data/apache-spark/apache-installation-and-building-stand-alone-applications/

免责声明:我是那个网站的创建者。

13

一个Spark程序首先要做的就是创建一个SparkContext对象,这个对象告诉Spark如何访问集群。要创建SparkContext,你需要先构建一个SparkConf对象,这个对象包含了你应用程序的一些信息。

如果你是在运行pyspark,也就是在命令行中使用它,Spark会自动为你创建一个名为sc的SparkContext对象。但是如果你是在写Python程序,就需要像下面这样做:

from pyspark import SparkContext
sc = SparkContext(appName = "test")

所有的配置都要放在这个SparkContext对象里,比如设置执行器的内存大小或者核心数量。

这些参数也可以在命令行中传递,比如:

./bin/spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn-cluster \
--num-executors 3 \
--driver-memory 4g \
--executor-memory 2g \
--executor-cores 1
lib/spark-examples*.jar \
10

要给pyspark传递参数,可以使用类似这样的方式:

./bin/pyspark --num-executors 17 --executor-cores 5 --executor-memory 8G
29

请看这里:spark_context就像是你和正在运行的spark集群管理器之间的桥梁。简单来说,你需要先定义一个或多个运行环境给spark(可以参考安装和初始化的文档),这些环境会告诉你要在哪些节点上运行等等。你通过一个配置来启动spark_context对象,这个配置会告诉它使用哪个环境,比如应用的名称。之后的所有操作,比如加载数据,都是通过这个上下文对象的方法来进行的。

对于简单的示例和测试,你可以选择在“本地”运行spark集群,这样就可以省去上面提到的很多细节,比如:

./bin/pyspark --master local[4]

这段代码会启动一个解释器,并且上下文已经设置为使用你自己CPU上的四个线程。

在一个独立的应用中,如果要通过sparksubmit来运行:

from pyspark import SparkContext
sc = SparkContext("local", "Simple App")

撰写回答