Spark 作业在显示所有作业完成后重新启动然后失败(TimeoutException:期货在 [300 秒] 后超时)
Spark job restarted after showing all jobs completed and then fails (TimeoutException: Futures timed out after [300 seconds])
我正在 运行 进行 spark 工作。它显示所有作业都已完成:
但是几分钟后整个作业重新启动,这次它也会显示所有作业和任务都已完成,但几分钟后它将失败。
我在日志中发现了这个异常:
java.util.concurrent.TimeoutException: Futures timed out after [300 seconds]
所以当我尝试连接 2 个相当大的表时会发生这种情况:一个 3B 行,第二个是 200M 行,当我 运行 show(100)
在结果数据帧上时,一切得到评估,我遇到了这个问题。
我尝试调整 increasing/decreasing 分区数,我将垃圾收集器更改为线程数增加的 G1。我将 spark.sql.broadcastTimeout
更改为 600(这使超时消息更改为 600 秒)。
我还了解到这可能是一个沟通问题,但是 运行 在此代码段之前的其他 show()
子句没有问题,所以可能不是。
这是提交命令:
/opt/spark/spark-1.4.1-bin-hadoop2.3/bin/spark-submit --master yarn-cluster --class className --executor-memory 12g --executor-cores 2 --driver-memory 32g --driver-cores 8 --num-executors 40 --conf "spark.executor.extraJavaOptions=-XX:+UseG1GC -XX:ConcGCThreads=20" /home/asdf/fileName-assembly-1.0.jar
您可以了解有关 spark 版本的信息,以及从那里使用的资源。
我从这里去哪里?任何帮助将不胜感激,如果需要,将提供代码 segments/additional 日志记录。
最终解决这个问题的方法是在加入之前保留两个数据帧。
我查看了持久化数据帧之前和之后的执行计划,奇怪的是,在持久化之前,spark 尝试执行 BroadcastHashJoin
,显然由于数据帧的大小而失败,在坚持执行计划后显示连接将是 ShuffleHashJoin
,完成时没有任何问题。错误?也许,我会尝试使用更新的 spark 版本。
我正在 运行 进行 spark 工作。它显示所有作业都已完成:
但是几分钟后整个作业重新启动,这次它也会显示所有作业和任务都已完成,但几分钟后它将失败。 我在日志中发现了这个异常:
java.util.concurrent.TimeoutException: Futures timed out after [300 seconds]
所以当我尝试连接 2 个相当大的表时会发生这种情况:一个 3B 行,第二个是 200M 行,当我 运行 show(100)
在结果数据帧上时,一切得到评估,我遇到了这个问题。
我尝试调整 increasing/decreasing 分区数,我将垃圾收集器更改为线程数增加的 G1。我将 spark.sql.broadcastTimeout
更改为 600(这使超时消息更改为 600 秒)。
我还了解到这可能是一个沟通问题,但是 运行 在此代码段之前的其他 show()
子句没有问题,所以可能不是。
这是提交命令:
/opt/spark/spark-1.4.1-bin-hadoop2.3/bin/spark-submit --master yarn-cluster --class className --executor-memory 12g --executor-cores 2 --driver-memory 32g --driver-cores 8 --num-executors 40 --conf "spark.executor.extraJavaOptions=-XX:+UseG1GC -XX:ConcGCThreads=20" /home/asdf/fileName-assembly-1.0.jar
您可以了解有关 spark 版本的信息,以及从那里使用的资源。
我从这里去哪里?任何帮助将不胜感激,如果需要,将提供代码 segments/additional 日志记录。
最终解决这个问题的方法是在加入之前保留两个数据帧。
我查看了持久化数据帧之前和之后的执行计划,奇怪的是,在持久化之前,spark 尝试执行 BroadcastHashJoin
,显然由于数据帧的大小而失败,在坚持执行计划后显示连接将是 ShuffleHashJoin
,完成时没有任何问题。错误?也许,我会尝试使用更新的 spark 版本。