当前位置: 首页 > article >正文

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。


http://www.kler.cn/a/380506.html

相关文章:

  • HTTP 405 Method Not Allowed:解析与解决
  • 使用 Spring Boot 搭建 WebSocket 服务器实现多客户端连接
  • 规范:项目、目录、文件、样式、事件、变量、方法、url参数、注释、git提交 命名规范及考证
  • 使用opencv调用TV_L1算法提取光流
  • 使用DJL和PaddlePaddle的口罩检测详细指南
  • Linux系统性能调优技巧操作指南
  • Intellij IDE报错:[Information:java:javacTask:源发行版8需要目标发行版1.8]
  • PostgreSQL技术内幕17:PG分区表
  • 【初阶数据结构与算法】复杂度分析练习之轮转数组(多种方法)
  • Java json转换实体类(JavaBean),实体类(JavaBean)转换json
  • Visual Studio | 配置管理
  • DMRl-Former用于工业过程预测建模和关键样本分析的数据模式相关可解释Transformer网络
  • 【网络】自定义协议——序列化和反序列化
  • 如何为STM32的EXTI(外部中断)编写程序
  • 使用Django Channels实现WebSocket实时通信
  • 数据泄露后的安全重构:文件安全再思考
  • 【C++】布隆过滤器的概念与特点解析
  • 数据结构 之 线索二叉树(七)
  • 如何对数据库的表字段加密解密处理?
  • Maven resrouce下filtering作用说明
  • jupyter notebook的调试
  • 什么情况下,不推荐建立索引?
  • PDF Reader Pro for mac激活版 PDF编辑阅读器
  • gRPC 一种现代、开源、高性能的远程过程调用 (RPC) 可以在任何地方运行的框架
  • 电脑开机显示无信号然后黑屏怎么办?
  • 认识单双链表