标签: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保存到磁盘文件中,其他数据重复如此。
这是由于这样,即使内存很小,也可以处理大量的数据。
标签:save 一点 框架 TE 简单的 map mapreduce AC 简单
原文地址:https://www.cnblogs.com/nyist-/p/9161516.html