spark的RDD分区的设定规则

目录

一、第一种:parallelize 获取rdd时

二、第二种:通过外部读取数据-textFile

三、上面提到了默认分区数,那么默认分区是怎么计算呢?


一、第一种:parallelize 获取rdd时

  • 没有指定:spark.default.parallelism参数值决定
  • 指定分区:指定几个,就是几个分区

总结:假如指定了分区数,分区数就是这个,假如没有指定spark.default.parallelism。

二、第二种:通过外部读取数据-textFile

  • 没有指定:spark.default.parallelism和2取最小值,

                         具体计算并行度的公式:min(spark.default.parallelism,2)

  • 指定分区:最小分区数,最少有这么多分区,具体的分区数可以根据HDFS分片规则来 hdfs                     ( 一片是128M或者128*1.1 = 140.8M)

rdd3 = sc.textFile("hdfs://bigdata01:9820/datas/wordcount/data.txt", minPartitions=2) 

假如你这个data.txt = 500M ,此时的分区数是:4  因为 500 =  128+ 128+ 128+ 116

三、上面提到了默认分区数,那么默认分区是怎么计算呢?

  • local模式

     默认并行度取决于本地机器的核数,即:

  1. local: 没有指定CPU核数,则所有计算都运行在一个线程当中,没有任何并行计算
  2. local[K]:指定使用K个Core来运行计算,比如local[2]就是运行2个Core来执行
  3. local[*]: 自动帮你按照CPU的核数来设置线程数。比如CPU有4核,Spark帮你自动设置4个线程计算
  • 集群模式

      集群模式包含Stanalone、Yarn模式,Mesos的默认并行度为8
      默认并行度取决于所有executor上的总核数与2的最大值,比如集群模式的设置如下:

--num-executors 5
--executor-cores 2
上面配置Executor的数量为5,每个Executor的CPU Core数量为2,
executor上的总核数10,则默认并行度为Max(10,2)=10。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值