spark04-文件读取分区数据分配原理

Posted 小朋友,你是否有很多问号?

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spark04-文件读取分区数据分配原理相关的知识,希望对你有一定的参考价值。

https://blog.csdn.net/oracle8090/article/details/129013345?spm=1001.2014.3001.5502

通过上一节知道 总字节数为7 每个分区字节数为3

代码

  val conf: SparkConf = new SparkConf().setMaster("local").setAppName("wordcount")
 
    val sc: SparkContext = new SparkContext(conf)
    val rdd: RDD[String] = sc.textFile("datas/1.txt",2)
    rdd.saveAsTextFile("output")

通过运营最终得到的输出文件为:

part-00002为空文件

1.spark读取文件采用的是Hadoop方式读取,所以一行一行读取,跟字节数没有关系

2.数据读取时以偏移量为单位,偏移量不会被重新读取

/*数据(回车占两字符)=》偏移量

1@@ =>0 1 2

2@@ =>3 4 5

3 =>6

*/

3 数据分区的偏移量范围

0号分区 =>[0,3]=>1 2 偏移量是0-3 读取1@@ 2,但是以行为单位读取最终读取的为1@@,2@@,因此第一个分区文件分配的数字为1 2

1号分区 =>[3,6] => 3 偏移量是3-6 但是3 4 5 偏移量已经被0号分区读取过了,因此第二个分区文件分配的数字为3

2号分区 =>[6,7]

以上是关于spark04-文件读取分区数据分配原理的主要内容,如果未能解决你的问题,请参考以下文章

spark数据分区数量的原理

spark02-内存数据分区分配原理

Spark - 从 S3 读取分区数据 - 分区是如何发生的?

在 Spark Structured Streaming 中从中间读取现有多级分区文件数据的问题

spark基础知识四

spark何时以及如何在执行器上分配分区