请选择 进入手机版 | 继续访问电脑版

Spark分区规则

[复制链接]
黎平 发表于 2021-1-2 17:39:26 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一、指定分区数
指定分区数时和线程数无关
cc.txt(六行数据,在文件管理器检察文件巨细是16字节:6个数字和5个回车换行)

  1. /*        【指定分区数量】        (1)若数据总字节数value可以被指定分区数part整除,则分区数为part        (2)若数据总字节数value不能被整除,则根据Hadoop的1.1原则                value/part = byte(字节总数/分区数=每个分区的字节数)                value/byte = part  ->分区数                                   = mod -> 余数                mod / byte和10%作比力                A. 小于10%;不产生新分区,分区数为part                B. 大于10%;产生一个新分区,分区数为part+1        【不指定分区数】        默认的分区数:                (1)若setMaster("Local
  2. [*]")指定的核心数量>2,则分区数为2                (2)否则分区数为1*/package com.hsy.rddimport org.apache.spark.{SparkConf, SparkContext}object S0202_1_File_Part {  def main(args: Array[String]): Unit = {    //创建情况对象    val conf = new SparkConf().setMaster("local
  3. [*]").setAppName("File_Part")    val sc = new SparkContext(conf)    //创建RDD对象    val rdd = sc.textFile(path = "data/cc.txt",minPartitions = 3)    //执行动作    rdd.saveAsTextFile(path = "output")    sc.stop();    //关闭情况变量,释放资源  }}
复制代码
执行效果:




part-00003是空的
分析:
字节总数:16 minPartitions=3
16/3=5……1 余数1大于除数3的10%,故增加一个分区,为4分区。
二、不指定分区时(默认分区)
若线程数大于2,则分区数为2;若线程数不大于2,分区数为1
三、Data详解
注:这里是将上面的minPartitions=3改成4
按行读取,且度过的数据不会重复读


来源:https://blog.csdn.net/qq_43543940/article/details/112058693
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )