MAR*_*ARK 8 parallel-processing scala apache-spark
我对Spark和Scala中的并行性有些困惑.我正在运行一个实验,我必须从磁盘更改/处理某些列中读取许多(csv)文件,然后将其写回磁盘.
在我的实验中,如果我只使用SparkContext的parallelize方法,那么它似乎对性能没有任何影响.然而,简单地使用Scala的并行集合(通过标准杆)可将时间减少到几乎一半.
我正在localhost模式下运行我的实验,其中参数local [2]用于spark上下文.
我的问题是我什么时候应该使用scala的并行集合以及何时使用spark context的并行化?
SparkContext 将有额外的处理以支持多个节点的通用性,这将在数据大小上保持不变,因此对于庞大的数据集可能可以忽略不计。在 1 个节点上,这种开销将使其比 Scala 的并行集合慢。
使用 Spark 时
SparkContext 的并行化可能使您的集合适合在多个节点以及单个工作实例 ( local[2] ) 的多个本地核心上进行处理,但话又说回来,您可能会因运行 Spark 的任务调度程序而获得太多开销魔法。当然,Scala的并行集合在单机上应该更快。
http://spark.incubator.apache.org/docs/latest/scala-programming-guide.html#parallelized-collections - 您的文件是否足够大,可以自动拆分为多个切片,您是否尝试手动设置切片数量?
您是否尝试过在单核上运行相同的 Spark 作业,然后在两个核上运行?
Spark 最好的结果是使用一个非常大的统一结构文件,而不是多个较小的文件。