python - Spark 执行时间与 AWS EMR 上的节点数量

标签 python amazon-web-services apache-spark execution-time

我是 Spark 新手。我尝试在 Amazon EMR 上运行一个简单的应用程序(找到 Python pi 近似 here ),使用 1 个工作节点,并在第二阶段使用 2 个工作节点 (m4.large)。每次完成任务所用时间约为 25 秒。天真地,我期待 2 个节点能带来 1.5 倍的增益。我天真吗?正常吗?

最佳答案

让我们做一个简单的实验:

from functools import reduce
from operator import add
import timeit

# Taken from the linked example.

n = 100000

def f(_):
    x = random() * 2 - 1
    y = random() * 2 - 1
    return 1 if x ** 2 + y ** 2 < 1 else 0

%timeit -n 100 reduce(add, (f(x) for x  in range(n)))

我使用相当旧的硬件得到的结果:

100 loops, best of 3: 132 ms per loop

这应该是单个分区的预期处理时间,我们得到的值与任务调度时间相当。

结论?您测量的是集群和应用程序延迟(上下文初始化、调度延迟、上下文拆卸),而不是处理时间。

关于python - Spark 执行时间与 AWS EMR 上的节点数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40491267/

相关文章:

apache-spark - Spark : sort within a groupBy with dataframe

Python - 正则表达式 - True 或 False

python - 将模型字段值分配给 django 中的自定义字段?

python - 从另一个词典列表创建一个词典列表

java - 如何完全驱逐Spark中的持久 "Stream Blocks"

apache-spark - Spark + 写入 Hive 表 + 解决方法

python - 如何根据 Pandas 中的列填充缺失值?

mysql - 如何使用 native 同步函数从 Amazon Aurora MySQL 数据库集群调用 Lambda 函数

amazon-web-services - 必须允许哪些策略操作才能将文件上传到 s3?

spring-mvc - Thymeleaf 模板解析器前缀与 Gradle