Spark-app根据不同的执行器内存返回不同的结果? [英] spark - application returns different results based on different executor memory?

查看:17
本文介绍了Spark-app根据不同的执行器内存返回不同的结果?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我注意到一些奇怪的行为,我有一个Spark作业,它读取数据,执行一些分组排序和联接,并创建一个输出文件。

问题是,当我在超过环境的内存上运行相同的作业时,例如,集群有50 GB,而我提交的Spark-Submit的执行器内存和4 GB驱动内存接近60 GB。 我的结果减少似乎是某个数据分区或任务在处理时丢失。

driver-memory 4g --executor-memory 4g --num-executors 12

我还注意到驱动程序上的警告消息-

WARN util.Utils: Truncated the string representation of a plan since it was too large. This behavior can be adjusted by setting 'spark.debug.maxToStringFields' in SparkEnv.conf. 

但是,当我使用有限的执行器和内存示例15 GB运行时,它是有效的,并且我得到了准确的行/数据。没有警告消息。

driver-memory 2g --executor-memory 2g --num-executors 4

有什么建议吗?我们是否遗漏了群集上的某些设置? 请注意,我的工作在这两种情况下都成功完成。 我使用的是Spark版本2.2。

推荐答案

这是没有意义的(可能调试除外)-当涉及更多执行器时,计划会更大,并且警告是它太大,无法转换为字符串。如果需要,您可以将spark.debug.maxToStringFields设置为更大的数字(如警告消息中所建议的)

这篇关于Spark-app根据不同的执行器内存返回不同的结果?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆