【Spark学习笔记】- 5.1 IO基本实现原理

IO基本实现原理

Input& Output

字节流

InputStream in = new FileInputStream("path")
int i = -1

while ( (i = in.read()) != -1 ) {
	println(i);
}

在这里插入图片描述

上述为字节流 需要一个字节一个字节读取数据,读一个打印一个。功能可以实现,效率不高。

缓存流

InputStream in = new BufferedInputStream(new FileInputStream("path"))
int i = -1

while ( (i = in.read()) != -1 ) {
	println(i);
}

在这里插入图片描述

读取完后,不会马上打印出来先放到buff缓冲区域,待到达某个阈值,一起打印出来。类似批处理

字符流

Reader in = new BufferedReader(new InpuketreamReader(new FileInputStream("path"),"UTF-8"
	)
)
String s = null
while ( (s = in.readLine()) != null ) 
println(i);
}

IO操作体现了装饰着模式
字符流的底层逻辑 依旧是字节流,一个一个字节读取后,转换成字符。再到下面的buff 缓存区达到阈值,一起打印出来。

RDD与IO的区别

在这里插入图片描述


在这里插入图片描述

由IO操作原理可见,对RDD进行了层层的装饰。
RDD的数据处理方式类似于IO流,也有装饰者设计模式。
RDD的数据只有在调用collect方法时,才会真正执行业务这再操作。之前的操作全部是功能的扩展。
之前的RDD是不保存数据的,但是IO可以临时保存一部分数据

在这里插入图片描述

task 放到哪个位置合适,从下图可以看出,在分布式节点中,task可以放到上面的节点也可以放到下面的节点。但是,放到哪个节点合适呐?我们可以看到数据是在上面的节点中,逻辑计算是在下面的节点上。如果将上面的节点中的数据转移到下面的节点中,且节点的数据非常大,那么需要考虑网络延迟问题。但是将计算放到上面则不需要考虑。

在这里插入图片描述

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉格朗日(Lagrange)

手敲不易,谢谢各位老板,打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值