因此,我在 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时
消耗,仅使用 1 个核心。为什么会这样呢?其次,火花
文档说默认并行性包含在属性中Spark.默认并行度。我如何从我的内部读取此属性
python 程序?
由于上述内容对我来说都没有真正的作用(也许是因为我并没有真正理解它们),所以这是我的两分钱。
我开始我的工作spark-submit program.py
在我的文件里面sc = SparkContext("local", "Test")
。我尝试验证核心数量spark sees with sc.defaultParallelism
。原来是1。当我把上下文初始化改成sc = SparkContext("local[*]", "Test")
它变成了 16(我系统的核心数量),并且我的程序正在使用所有核心。
我很新spark,但我的理解是local默认情况下表示使用一个核心,并且由于它是在程序内部设置的,因此它将覆盖其他设置(在我的情况下,它肯定会覆盖配置文件和环境变量中的设置)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)