为什么Spark不使用本地计算机上的所有核心

时间:2014-02-15 00:15:07

标签: apache-spark parallel-processing mapreduce

当我在Spark-Shell中运行一些Apache Spark示例或作为一项工作时,我无法在一台机器上实现完全核心利用率。例如:

var textColumn = sc.textFile("/home/someuser/largefile.txt").cache()
var distinctWordCount = textColumn.flatMap(line => line.split('\0'))
                             .map(word => (word, 1))
                             .reduceByKey(_+_)
                             .count()

运行此脚本时,我在8核计算机上只看到1个或2个活动核心。 Spark不应该和它并行吗?

2 个答案:

答案 0 :(得分:5)

您可以使用=LEFT(LOOKUP(2,1/(D:D<>0),D:D),LEN(LOOKUP(2,1/(D:D<>0),D:D))-2) 本地运行Spark,其中包含与您的计算机一样多的工作线程。

答案 1 :(得分:1)

运行本地spark shell时,仍然需要指定spark任务将使用的核心数。如果你想使用8核,请确保

export MASTER=local[8]

在运行shell之前。

另外,正如@zsxwing所说,您可能需要确保将数据划分为足够的分区以保持所有核心繁忙,或者指定要查看的并行数量。