ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Spark 源码系列 - 获取分区数

2022-05-03 18:03:34  阅读:183  来源: 互联网

标签:SparkContext Int 分区 defaultParallelism 源码 conf Spark spark


目录

版本

本分析基于Spark version 3.1.2

结论

local模式下,默认最小分区数不会超过2

  • 如果对spark.default.parallelism属性赋值 && 值>=2,则分区数为2.
  • 其他情形分区数为1.

代码入口

val conf = new SparkConf()
conf.setAppName("my-spark-01")
conf.setMaster("local")
// 取消如下注释,分区数为2;否则分区数为1
// conf.set("spark.default.parallelism", "3")

val sc = new SparkContext(conf)
val lines = sc.textFile("./data/words")

SparkContext -> textFile

def textFile(
    path: String,
    minPartitions: Int = defaultMinPartitions): RDD[String] = withScope {...}

SparkContext -> defaultMinPartitions

// 默认最小分区数不会超过2
def defaultMinPartitions: Int = math.min(defaultParallelism, 2)

SparkContext -> defaultParallelism

def defaultParallelism: Int = {
  ...
  taskScheduler.defaultParallelism
}

TaskSchedulerImpl

override def defaultParallelism(): Int = backend.defaultParallelism()

LocalSchedulerBackend

// totalCores在系统初始化时赋值为1
// 如果在程序启动时没有设置spark.default.parallelism的值,那么该方法返回值是1
override def defaultParallelism(): Int =
  scheduler.conf.getInt("spark.default.parallelism", totalCores)

标签:SparkContext,Int,分区,defaultParallelism,源码,conf,Spark,spark
来源: https://www.cnblogs.com/abc608088/p/16218876.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有