我有一个作业,它大约包含9条sql语句,用于从hive中提取数据并将其写回hive db。它目前运行3小时,这似乎太长,考虑火花的能力,以处理数据。应用程序启动总共11个阶段。
我使用Spark做了一些分析,发现下面的灰色区域可以改进:
我们有一个由800个节点组成的集群,每个队列的资源都受到限制,我正在使用下面的conf提交作业:
附加图像的UI以及。
现在我的问题是:

对此有什么解释吗?
发布于 2018-10-01 10:08:42
以下是可能在某种程度上指导你的思维过程:
每个执行者有必要拥有一个核心吗?遗嘱执行人不必总是很胖。你可以在一个执行器里有更多的核心。这是在创造一个苗条的与肥胖的执行者之间的权衡。
配置混叠分区参数spark.sql.shuffle.partitions
确保在从Hive读取数据时,您使用的是Sparksession (基本上是HiveContext)。这将将数据从HDFS和Hive的Metastore中提取到Spark内存中。
是的,资源的动态分配是一项有助于分配正确资源集的功能。这总比有固定的分配好。
https://stackoverflow.com/questions/52581022
复制相似问题