【发布时间】:2014-05-29 02:38:34
【问题描述】:
我有 20GB 的数据需要处理,所有这些数据都适合我的本地计算机。我计划使用 Spark 或 Scala 并行集合来针对这些数据实现一些算法和矩阵乘法。
既然数据适合单台机器,我应该使用 Scala 并行集合吗?
这是真的吗:并行任务的主要瓶颈是将数据送到 CPU 进行处理,所以由于所有数据都尽可能接近 CPU,Spark 不会带来任何显着的性能提升?
即使 Spark 只在一台机器上运行,它也会有设置并行任务的开销,所以这种开销在这种情况下是多余的?
【问题讨论】:
-
所有这些数据都适合我的本地机器你在说 RAM 吗?
-
@om-nom-nom 是的,我在谈论 RAM
-
很抱歉重复了这个问题:当您说“我有 20GB 的数据”和“适合我的本地机器”时。 20GB 是一个文件吗?假设您有超过 20GB 的 RAM?或者当它已经加载到 RAM 中时测量 20GB 的数据?
-
@maasg 我的 20GB 测量基于 20GB 是一个文件并且我有超过 20GB 的 RAM?"
-
20GB 的数据在 RAM 上可能会变得更多,因为对象和数据结构具有开销空间成本。此外,对 RDD 的操作将创建新的 RDD,从而乘以该内存成本因子。很难以通用的方式准确量化,但您需要在 RAM 中存储数倍于数据大小的数据才能对其进行处理。这一切都取决于您的分析管道的深度和复杂性。
标签: scala parallel-processing apache-spark