使用Spark 2.1.0。
Spark Spilling on Disk和Persist / Caching之间的区别是什么。我是说他们的工作方式。 Spilling to Disk意味着任务正在处理某个分区&它太大而无法容纳在内存中,它溢出到磁盘。它是否正确?
持久/缓存是指我们对RDD进行了一些计算或过滤掉了一些数据,我们希望存储结果RDD以重新使用它,以便我们坚持使用它。这将避免从第1步开始的所有重新计算。
我想让这些术语/定义得到澄清的原因是要知道Spark及其SQL模块(SparkSQL)是否可以完全替换 HIVE .. ???
原因让我问这个是我正在运行一个Spark Job并且作为一个练习我必须将所有现有的作业(查询)运行到Spark中。
因为这是一个非常直接和透明的活动,因为Spark非常好地运行Queries&在spark-hive库jar的帮助下具有相同的准确度。
在此过程中出现了Spark的工作方式和问题。它处理巨大数据集的能力。
好的开始使用HIVE - 它适用于分区并在磁盘上写入中间/临时数据并继续前进。我不知道HIVE / MR是否将此机制称为Spilling,因为计算它必须在内存期间加载的任何内容(Spark或HIVE)。现在因为涉及磁盘写入它很慢但是由于内存问题而不太容易出现故障这里容器大小无关紧要,因为它的默认性质是写入磁盘上的临时文件。
进入Spark - 以将数据/分区加载到内存并使用DAG准备在内存中进行计算而闻名...仅与计算和临时计算数据在内存中加载的数据的大小/数量有所不同存储为与HIVE相比,它写入磁盘的所有内容......?或者它实际上还有更多...... ???