Scala Spark中的并行集合
Spark中“并行集合”的概念是什么?这个概念如何提高作业的整体性能?此外,分区应该如何配置?Scala语言中提供了并行集合,这是一种在Scala中并行化数据处理的简单方法。其基本思想是,当您执行诸如Scala Spark中的并行集合,scala,apache-spark,bigdata,Scala,Apache Spark,Bigdata,Spark中“并行集合”的概念是什么?这个概念如何提高作业的整体性能?此外,分区应该如何配置?Scala语言中提供了并行集合,这是一种在Scala中并行化数据处理的简单方法。其基本思想是,当您执行诸如map、filter等操作时。。。对于集合,可以使用线程池对其进行并行化。这种类型的并行化称为数据并行化,因为它基于数据本身。这是在JVM中本地发生的,Scala将使用JVM可用的尽可能多的线程 另一方面,Spark基于RDD,RDD是表示分布式数据集的抽象。与Scala并行集合不同,此数据集分布在
map
、filter
等操作时。。。对于集合,可以使用线程池对其进行并行化。这种类型的并行化称为数据并行化,因为它基于数据本身。这是在JVM中本地发生的,Scala将使用JVM可用的尽可能多的线程
另一方面,Spark基于RDD,RDD是表示分布式数据集的抽象。与Scala并行集合不同,此数据集分布在多个节点中。Spark也基于数据并行,但这次是分布式数据并行。这使您可以比在单个JVM中进行更多的并行化,但它还引入了与数据洗牌相关的其他问题
总之,Spark实现了一个分布式数据并行系统,因此每次执行映射
、过滤器
等时。。。您正在做一些类似于Scala并行集合的事情,但是是以分布式方式进行的。Spark中的并行单位也是分区,而Scala集合中的并行单位是每一行
您可以始终在Spark任务中使用Scala并行集合来在Spark任务中进行并行化,但不一定会看到性能的提高,特别是如果您的数据已经均匀地分布在RDD中,并且每个任务都需要大约相同的计算资源来执行。@Andreytukin您的意见是什么?@Andreytukin您是对的,我概括得太多了,我已经对我想说的内容进行了编辑,以便更准确地说明确保使用parallelize()方法,因为一旦并行到分区,任何转换都是在分区上并行完成的。