为什么这个简单的 Spark 程序不利用多核?

2023-12-24

因此,我在 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(使用前将#替换为@)

为什么这个简单的 Spark 程序不利用多核? 的相关文章

随机推荐