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

文章介绍了Spark通过SparkConf和SparkContext读取文本文件的方式,强调了它以Hadoop的方式按行读取数据,不考虑字节数。每行数据的偏移量不会被重读,且数据分区基于偏移量范围,例如0号分区读取了1&&2,1号分区读取了3。因此,分区文件中的内容反映了这种读取模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值