【发布时间】:2016-10-18 02:57:19
【问题描述】:
在 EPFL 的并行编程课程中,提到了数据并行的四个抽象:Iterator、Builder、Combiner 和 Splitter。
我对@987654326@很熟悉,但没用过其他三个。我在scala.collection 包下看到了其他特征Builder、Combiner 和Splitter。但是,我知道如何在实际开发中使用它们,特别是如何与其他集合(如List、Array、ParArray 等)协作使用它们。谁能给我一些指导和示例?
谢谢!
【问题讨论】:
-
不幸的是,我认为它们在现实世界中没有多大用处。并行集合库处于一个非常尴尬的位置:对于真正的大型数据集,您将使用 Spark 等分布式处理框架在多台机器上处理它们。对于单台机器,您将需要足够大的数据集来克服跨不同线程/内核同步的开销(请参阅this article)。对于那些特殊情况,使用流式方法在内存使用方面会好得多。
-
并非任何库中的每个组件都应该使用或应该有实际用途。一些(实际上是大多数)组件应该永远不会与之交互。
标签: scala collections parallel-processing