Spark中“并行集合”的概念是什么,以及这个概念如何改善作业的整体表现?此外,应该如何配置分区?
答案 0 :(得分:2)
Scala语言中提供了并行集合,作为在Scala中并行化数据处理的简单方法。基本思想是,当您对集合执行map
,filter
等操作时,可以使用线程池对其进行并行化。这种类型的并行化称为数据并行化,因为它基于数据本身。这在JVM本地发生,Scala将使用与JVM可用的核心一样多的线程。
另一方面,Spark基于RDD,它是表示分布式数据集的抽象。与Scala并行集合不同,此数据集分布在多个节点中。 Spark也是基于数据并行性,但这次是分布式数据并行性。这允许您比单个JVM更多地并行化,但它也引入了与数据混洗相关的其他问题。
总之,Spark实现了一个分布式数据并行系统,所以每次执行map
,filter
等等......你都会做类似于Scala并行集合的工作,但是分布式的时尚。 Spark中的并行单元也是分区,而Scala集合中的每一行都是分区。
你总是可以在Spark任务中使用Scala并行集合来在Spark任务中进行并行化,但是你不一定会看到性能提升,特别是如果你的数据已经在RDD中均匀分布并且每个任务需要大致相同的计算要执行的资源。