所以,我正在一个16核的多核系统上运行这个简单程序。我通过以下方式运行它:
spark-submit --master local[*] pi.py
那个程序的代码如下。
#"""pi.py"""
from pyspark import SparkContext
import random
N = 12500000
def sample(p):
x, y = random.random(), random.random()
return 1 if x*x + y*y < 1 else 0
sc = SparkContext("local", "Test App")
count = sc.parallelize(xrange(0, N)).map(sample).reduce(lambda a, b: a + b)
print "Pi is roughly %f" % (4.0 * count / NUM_SAMPLES)
当我使用 top 命令查看 CPU 使用情况时,只有一个核心被使用。为什么会这样?另外,Spark 文档说默认并行度包含在属性 spark.default.parallelism 中。我如何从我的 Python 程序中读取此属性?
*
。将其保留为*
会默认使用最大数量的本地核心。仅使用local
将其设置为1个核心。 - anmol