我有 20GB 的数据需要处理,所有这些数据都适合我的本地机器。我计划使用 Spark 或 Scala 并行集合来针对这些数据实现一些算法和矩阵乘法。
由于数据适合一台机器,我应该使用 Scala 并行集合吗?
这是真的:并行任务的主要瓶颈是将数据送到 CPU 进行处理,因此由于所有数据都尽可能接近 CPU,因此 Spark 不会带来任何显着的性能改进吗?
即使 Spark 只在一台机器上运行,它也会有设置并行任务的开销,所以在这种情况下这个开销是多余的?
最佳答案
很难提供一些不明显的指令,比如如果你有数据并且没有达到 80% 的内存和......,然后使用本地模式。话虽如此,有几点,一般来说,即使您的数据适合机器内存,也可能使您使用 spark:
如果您有重复计算,而不是一次性查询,这一点尤其重要(这样,您花在表上的时间可能会得到返回)
在您的特定情况下
so since all of the data is as close as can be to the CPU Spark will not give any significant performance improvement
当然不是,Spark 不是一种巫毒魔法,它可以使您的数据更接近 CPU,但它可以帮助您在机器之间进行扩展,从而在 CPU 之间进行扩展(第 1 点)
Spark will have the overhead setting up parallel tasks even though it will be just running on one machine, so this overhead is redundant in this case ?
我可能听起来很明显,但是
为什么我应该使用 Spark? 的列表中还有 [厚脸皮] 点 4)。这是炒作——Spark 是一种非常性感的技术,它很容易“推销”给你的开发人员(它是大数据的前沿)和公司(你的老板,如果你正在开发自己的产品,你的客户)如果您正在为其他人构建产品)。
关于scala - 如果数据适合一台机器,使用 Spark 有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23918037/