hadoop—spark在持久化、溢出到磁盘和分区方面是如何工作的?与Hive相比,spark不是更好的选择吗?

wbgh16ku  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(238)

使用spark 2.1.0。
磁盘上的Spark溢出和持久化/缓存有什么区别。我是说他们是怎么工作的。溢出到磁盘意味着当一个任务在某个分区上工作时&这个分区太大,无法放入内存,它就会溢出到磁盘。是这样吗?
persist/caching是指我们对rdd进行了一些计算或过滤掉了一些数据,并且我们希望存储得到的rdd以重用它,这样我们就可以持久化它。这将避免从第一步开始的所有重新计算。
我想清除这些术语/定义的原因是想知道spark及其sql模块(sparksql)是否可以完全取代hive???
我之所以问这个问题,是因为我正在运行一个spark作业,作为练习,我必须将所有现有的作业(查询)运行到spark中。
因为这是一个非常直接和透明的活动,因为spark可以很好地运行查询&在spark-hive-library-jar的帮助下具有相同的准确性。
在这期间,spark的工作方式和处理大量数据集的能力引发了多个问题。
可以从hive开始—它在一个分区上工作,在磁盘上写入中间/临时数据,并继续前进。我不知道hive/mr是否将这种机制称为溢出机制,因为要计算它必须在内存周期(spark或hive)中加载。现在,由于涉及到磁盘写入,因此速度很慢,但由于内存问题,因此不太容易发生故障。我猜,由于其默认的工作性质,即写入磁盘上的临时文件,因此容器大小不会有太大影响。
来到spark——它的所有名声都是将数据/分区加载到内存中,并使用dag准备在内存中进行计算……与将数据写入磁盘的hive相比,它的区别仅仅在于为计算和临时计算数据存储而加载到内存中的数据的大小/数量。。。??或者它真的有更多。。???

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题