Spark 文件切片与数据读取解析

本文详细解析了Spark读取文件时的切片规则,即按字节划分,以及数据读取规则以行为单位。重点讨论了文件切片数量的确定、分区数据存储方式,并通过实例演示了如何设置不同分区数和文件内容的读取。同时介绍了Hadoop分区原则,确保数据不跨文件边界。
摘要由CSDN通过智能技术生成

1.Spark读取文件采用的是Hadoop的读取规则

文件切片规则:以字节方式来切片

数据读取规则:以行为单位来读取

注意:文件中回车换行也占2个字节

2.问题:文件到底切成几片(分区的数量)?

文件字节数(10),预计切片数量(2)

10/2=》5byte

源码:

totalSize = 10

goalSize = totalSize / numSplits = 10 / 2 = 5 …1 => 3

//所谓的最小分区数,取决于总的字节数是否能整除分区数并且剩余的直接达到一个比率

//实际产生的分区数可能大于最小分区数

3.分区的数据如何存储?

分区数据是以行为单位读取的,而不是字节,但是会考虑偏移量(数据的offset)的设置

//TODO 1.分几个区?(规则 )

//10byte/4 = 2byte…2byte => 5

//0=>(0,2)

//1=>(2,4)

//2=>(4,6)

//3=>(6,8)

//4=>(8,10)
在这里插入图片描述

//TODO 2.数据如何存储?(数据)

//数据是以行的方式读取,但是会考虑偏移量(数据的offset)的设置

1.txt内容:

1

2

3

4

设置5个分区数;

//1@@ => 012

//2@@ =>345

//3@@ =>678

// 4 =>9

按规则读取数据(展示):

//0=>(0,2) =>1

//1=>(2,4) =>2

//2=>(4,6) =>3

//3=>(6,8) =>

//4=>(8,10) =>4

TODO hadoop分区是以文件为单位进行划分的,读取数据不能跨越文件

1.txt 内容:

1

234

设置3个分区数;

// 1@@ => 012

// 234 => 345

// 12/3=4个文件

// 1.txt =>(0,4)

​ =>(4,6)

// 2.txt =>(0,4)

​ =>(4,6)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值