Python 为什么spark内容默认并行度与vCPU的数量不同?
我在Google云平台Dataproc中创建了一个集群,代码片段如下:Python 为什么spark内容默认并行度与vCPU的数量不同?,python,apache-spark,google-cloud-platform,pyspark,google-cloud-dataproc,Python,Apache Spark,Google Cloud Platform,Pyspark,Google Cloud Dataproc,我在Google云平台Dataproc中创建了一个集群,代码片段如下: gcloud dataproc clusters create $SOLO \ --project $PROJ \ --bucket $STORAGE \ --region $REGION \ --image-version 1.4-ubuntu18 --single-node \ --master-machine-type n1-standard-8 \ --master-b
gcloud dataproc clusters create $SOLO \
--project $PROJ \
--bucket $STORAGE \
--region $REGION \
--image-version 1.4-ubuntu18 --single-node \
--master-machine-type n1-standard-8 \
--master-boot-disk-type pd-ssd --master-boot-disk-size 100 \
--initialization-actions gs://goog-dataproc-initialization-actions-$REGION/python/pip-install.sh \
从中可以看出,n1-standard-8
具有8个vCPU
我有一个PySpark脚本,其中包含以下代码:
import pyspark
sc = pyspark.SparkContext.getOrCreate()
print(sc.defaultParallelism)
当我将PySpark脚本提交到集群时,作业日志显示Spark内容的默认并行度为2
为什么
sc.defaultParallelism
返回2而不是8?根据Spark文档,此参数通常仅在上下文中有意义。即使在这种情况下,也取决于它正在执行的操作类型,例如减少/加入/并行化,并且不总是重新运行本地计算机上的内核数 根据Spark文档,此参数通常仅在上下文中有意义。即使在这种情况下,也取决于它正在执行的操作类型,例如减少/加入/并行化,并且不总是重新运行本地计算机上的内核数 劫持Henry的答案,并基于我对并行计算的一点了解n1-standard-8
是您可以拥有的最大值,除非作业调度器允许从可用资源池中动态分配(而不是增加)资源给您的作业。有些作业所需的资源可能少于最初引用的资源,因此分配的资源可能大于1到小于8。劫持Henry的答案并基于我对并行计算的一点了解n1-standard-8
是最大值,除非作业调度程序允许动态分配(而不是增加)从可用资源池中将资源分配给作业。有些工作可能需要少于最初报价的工作,因此分配的工作从1到8不等