我注意到一些特殊的行为,我有火花作业,可以读取数据并进行一些分组排序,然后加入并创建输出文件。
问题是,当我在内存上运行的作业超出环境的能力时,例如群集拥有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版。
答案 0 :(得分:0)
这是没有意义的(可能除了调试以外)-当涉及更多执行者时,该计划将更大,并且警告是它太大而无法转换为字符串。如果需要,可以将spark.debug.maxToStringFields
设置为更大的数字(如警告消息中所述)