我有20GB的数据需要处理,所有这些数据都适合我的本地机器。我打算使用Spark或Scala并行收集来对这些数据实现一些算法和矩阵乘法。
由于数据适用于单个机器,我应该使用Scala并行集合吗?
这是真的:并行任务的主要瓶颈是将数据传送到CPU进行处理,因为所有数据都尽可能接近CPU Spark会不会带来任何显着的性能提升?
Spark会设置并行任务的开销,即使它只是在一台机器上运行,所以这种开销在这种情况下是多余的?
答案 0 :(得分:11)
很难提供一些非显而易见的指令,例如,如果你有你的数据并且没有达到80%的内存和......,那么使用本地模式。话虽如此,有一些要点,一般来说,即使你的数据适合你的机器内存,也可能会让你使用spark:
在您的特定情况下
所以因为所有数据都与CPU Spark一样接近 没有给出任何显着的性能提升
当然不是,Spark并不是一种伏都教魔法,它可能会让你的数据更接近CPU,但它可以帮助你在机器之间扩展,从而缩小CPU(点#1)
即使它,Spark也会设置并行任务的开销 将只在一台机器上运行,因此这个开销是多余的 这个案子?
我可能听起来很明显,但是
在列表中还有[厚颜无耻]第4点)我为什么要使用Spark?。这是炒作 - Spark是一种非常性感的技术,很容易“销售”给你的开发者(它是大数据的最前沿)和公司(你的老板,如果你正在建立自己的产品,你的客户如果你正在为其他人建造产品。)