spark-应用程序基于不同的执行程序内存返回不同的结果?

时间:2018-08-10 16:58:08

标签: apache-spark yarn

我注意到一些特殊的行为,我有火花作业,可以读取数据并进行一些分组排序,然后加入并创建输出文件。

问题是,当我在内存上运行的作业超出环境的能力时,例如群集拥有50 GB的内存,而我提交的火花提交具有接近60 GB的执行器和4GB驱动程序内存。 我的结果下降似乎是在处理时丢失了数据分区之一或任务。

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. 

但是当我使用有限的执行程序和15GB的内存示例运行时,它可以工作,并且我获得了确切的行/数据。没有警告消息。

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

有什么建议我们会缺少群集上的某些设置吗? 请注意,在两种情况下我的工作均成功完成。  我正在使用Spark 2.2版。

1 个答案:

答案 0 :(得分:0)

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