在aws emr上尝试另存为表时引发作业超时

ymzxtsji  于 2021-05-16  发布在  Spark
关注(0)|答案(1)|浏览(627)

我们已经为我们在aws上的应用程序建立了一个专用集群。
这是核心的配置(我们有2个核心)

m5.xlarge
4 vCore, 16 GiB memory, EBS only storage
EBS Storage:64 GiB

当前数据集-
我们正在尝试运行spark作业,它涉及许多连接,并且处理8000万条记录,每条记录有60+个字段
我们面临的问题-
当我们试图将最终的Dataframe保存为athena表时,需要花费1个多小时的时间并超时。
由于我们是唯一一个使用集群的人,我们应该如何配置以确保我们以最佳方式使用所有集群资源
当前配置

Executor Memory : 2G
Dynamic Allocation Enabled : true
Number of Executor Cores : 1
Number of Executors : 8
spark.dynamicAllocation.executorIdleTimeout : 3600
spark.sql.broadcastTimeout : 36000
mec1mxoz

mec1mxoz1#

看看你的外形,观察一下-
您正在使用 m5.xlarge 它有4个vcore,16 gib内存
执行器配置
执行器核心数:1
执行器内存:2g
所以最多4个执行器可以启动,4个执行器需要的内存是8。所以最后你没有利用所有的资源。
同样正如@shadowtrooper所说的,将数据保存在分区中(如果可能的话,以Parquet格式保存),如果可以的话,在雅典娜查询时也会节省成本。

相关问题