【问题标题】:EMR/Spark slower with updated versions and better hardware更新版本和更好的硬件使 EMR/Spark 变慢
【发布时间】:2021-08-16 16:15:28
【问题描述】:

我的团队创建了一个更新的 EMR 集群来迁移我们所有的 pyspark 数据管道。

版本更新:

EMR: 5.29.0 -> 6.2.0
Spark: 2.4.4 -> 3.0.1

EMR 硬件更新:

Master: 1 r4.xlarge -> 1 r6g.xlarge
Core:   2 m5.xlarge -> 1 r6g.xlarge
Task:   5 r5.xlarge -> 14 r6g.xlarge

我们没有更改任何不受弃用库影响的代码。

举个例子,运行下面的代码,我们需要的时间从 200 秒到 500 秒,但几乎我们所有的代码都比较慢。

%pyspark
from datetime import date

df_lake = spark.read.format('csv').option("delimiter", "\t").load('s3a://sdite_bucket/data/raw/events_devices/')
df_lake.registerTempTable("snowplow")

maxrun = spark.sql("SELECT MAX(run) AS maxrun FROM snowplow").collect()[0]['maxrun']

我请你帮忙,因为我不知道我应该把重点放在哪里来解决这个速度问题,你有什么建议吗?

  • 硬件
  • 不推荐使用的代码
  • 更新库
  • Spark 配置
  • S3 连接

到目前为止谢谢。

【问题讨论】:

    标签: apache-spark amazon-s3 pyspark amazon-emr


    【解决方案1】:

    https://spark.apache.org/docs/latest/cloud-integration.html 有一节介绍了在读取/写入对象存储时 spark 的最佳配置。

    【讨论】:

    • 嘿,马克西姆,谢谢你的回答。我尝试了所有这些配置,但并没有提高速度。我上周意识到,性能下降的任务是使用 spark.sql 的任务。我检查了两个集群中的作业,表现更好的作业还有 1 个 spark 任务:ShuffledRowRDD。我认为在某种程度上,spark 是在不对其进行排序的情况下保存数据,并且它显着提高了速度。我正在尝试启用该配置或编辑可能会影响此的现有配置。你有什么建议吗?
    • 你好,我找到了这个spark.apache.org/docs/latest/…。我认为 Spark SQL 执行引擎 spark.apache.org/releases/spark-release-3-0-0.html 有一些变化。可以禁用其中的一些,看看它是否能提高性能。抱歉,对于为什么会这样,我没有明确的答案。
    • @lvgiac 你能解决吗?因为我也在考虑升级,但是现在我害怕这个问题。
    猜你喜欢
    • 2023-02-02
    • 2016-04-18
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    相关资源
    最近更新 更多