开始先声明一点:Spark并不是一个完全基于内存计算的引擎
在一般的概念中,都会说Spark是完全基于内存计算的、快速的、通用的、可扩展的大数据计算引擎
---->>>对此我的理解为基于内存的操作:
---------如果计算不涉及当前节点与其他节点进行数据及信息间的交换,那么Spark 可以在内存中一次性完成这些操作,如此一来就不需要中间的Shuffle阶段的落盘操作,进而减少了磁盘 IO 的操作
---->>>但如下这些情况很好的说明了Spark并不是完全基于内存计算的:
1.当Spark存在Shuffle操作时,这就一定要进行落盘操作(注意所有Shuffle都需要落盘,哪怕数据量在少也需要落盘操作)
2.是当内存空间有限,但要处理的数据量太大,导致内存无法存储数据,也就会执行落盘操作
3.如果Spark在运算过程中涉及到数据交换,Spark机制也会把Shuffle操作产生的数据,写入到文件或磁盘中