码迷,mamicode.com
首页 > 其他好文 > 详细

对spark内存迭代计算框架的理解误区

时间:2018-06-09 23:20:56      阅读:841      评论:0      收藏:0      [点我收藏+]

标签:save   一点   框架   TE   简单的   map   mapreduce   AC   简单   

在spark中很多时候我们常常以为一个文件是会被完整读入到内存,然后做各种变换。其实并不是这样的,除非你主动对RDD进行Cache/Persist缓存操作。

举一个简单的例子:

  sc.textfile("test.txt").map().saveasTextfile();

使用sc.textfile("test.txt") 算子获取一个初始的RDD(为了便于区分命名为rdd1,这里只考虑只有一个分区),在这个过程中并不是把test.txt文件中的数据作为一个整体处理的,而是对test.txt文件中的每一行数据进行一行一行的读取到内存中,直接进行计算,不再经过磁盘(这一点与Hadoop的mapreduce计算框架不同,也正是由于这个原因,spark的计算速度相较于mapreduce快很多)。举一个例子:执行sc.textfile("test.txt")获取到了test文件中第一行数据line1,对line1执行map()算子,得到 line1_1,如果没有设置持久化机制 line1被计算过后可能就被清除掉了,然后对line1_1保存到磁盘文件中,其他数据重复如此。

  这是由于这样,即使内存很小,也可以处理大量的数据。

 

对spark内存迭代计算框架的理解误区

标签:save   一点   框架   TE   简单的   map   mapreduce   AC   简单   

原文地址:https://www.cnblogs.com/nyist-/p/9161516.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!