lazy评估

cgvd09ve  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(353)

我试图理解apachespark中的惰性评估。我的理解是:
假设我在硬盘上有一个文本文件。
步骤:
1) 首先,我将创建rdd1,它现在只不过是一个数据定义
2) 我在rdd1上应用一些转换逻辑并创建rdd2,这里rdd2仍然是数据定义(仍然没有数据加载到内存中)
3) 然后我对rdd2应用filter并创建rdd3(仍然没有数据加载到内存中,rdd3也是一个数据定义)
4) 我执行一个操作,以便在文本文件中获得rdd3输出。所以当我执行这个动作时,我期望从内存输出一些东西,然后spark将数据加载到内存中,创建rdd1、2和3并产生输出。
所以spark中RDD的懒惰说,只要继续制定路线图(RDD),直到他们没有得到批准才能制定或生产它。
到目前为止我的理解正确吗。。。?
我在这里的第二个问题是,它说它(懒人评价)的原因之一就是spark比hadoop强大,请问我怎么会因为对hadoop不太了解?在这个场景中,hadoop会发生什么?
谢谢:)

bqf10yzr

bqf10yzr1#

是的,你的理解很好。动作图(dag)是通过变换建立的,它们一次计算一个动作。这就是懒惰执行的含义。
hadoop只提供一个文件系统(hdfs)、一个资源管理器(yarn)和允许您运行mapreduce的库。spark只关心在有足够内存的情况下比后者更优化
apachepig是hadoop生态系统中的另一个允许延迟评估的框架,但是与spark在其支持的语言中的广泛可编程性相比,它有自己的脚本语言。pig支持运行mapreduce、tez或spark操作进行计算。spark只运行和优化自己的代码。
在实际的mapreduce代码中,为了完成相对较大的任务,您需要按程序将操作的每个阶段写入磁盘或内存
spark并不是“hadoop”的替代品,它只是一种恭维。

相关问题