zoukankan      html  css  js  c++  java
  • Spark RDD 默认分区数量

    RDD.getNumPartitions()方法可以获得一个RDD分区数量,

    1、默认由文件读取的话,本地文件会进行shuffle,hdfs文件默认会按照dfs分片来设定。

    2、计算生成后,默认会按照executor-number*executor-cores来分片,也就是spark默认按照总工作核数来对数据分片,而不是工作实例数。

    RDD.repartitions(n:Int)和RDD.coalesce(n:Int,shuffle : Boolean)

    都是对RDD进行重新分区。

    源码实现上:def repartitions(n:Int) = coalesce(n,true)

    coalesce在shuffle参数为true是,必要情况下会进行shuffle操作。但若为False,则在不shuffle的情况下尽量满足重分区操作。

    repartition则是在shuffle配置为true下的coalesce。

    故而,对性能要求较高情况下或对重分区结果要求不苛刻的情况下,使用coalesce进行重分区,shuffle配置默认为false。

    对重分区结果要求比较精准的情况下,使用repartition或者shuffle置true的coalesce。

    小结:RDD分区数按照核数来分而不是实例数。

  • 相关阅读:
    第一阶段冲刺——4
    Day 1 测试流程--H模型
    【疑问】待解决
    Zookeeper 入门(一)
    【基础组件1】Flume入门(一)
    埋点测试、埋点接口测试
    单点登录 VS 多点登录
    web系统原理
    测试用例总结篇(一)
    功能测试心得(二)
  • 原文地址:https://www.cnblogs.com/suanec/p/7246542.html
Copyright © 2011-2022 走看看