广播变量找不到
2020-03-13 14:15:21,954 ERROR ql.Driver: (SessionState.java:printError(1214)) [HiveServer2-Handler-Pool: Thread-5475990(SessionHandle=b20cac73-1b69-47af-a4f0-fab521b43a91)] - EXECUTION FAILED: Task MAPRED-SPARK error SparkException: [Error 1] Job aborted due to stage failure: Task 8 in stage 2910698.1 failed 4 times, most recent failure: Lost task 8.3 in stage 2910698.1 (TID 765270081, 172.28.184.21): java.io.FileNotFoundException: http://172.28.184.9:36260/broadcast_7479411
默认4h(Dspark.cleaner.ttl)清理磁盘的broadcast,任务运行4h+之后,之前的broadcast被清理所以找不到
Dspark.cleaner.ttl.BROADCAST_FAST=1800 这个是半小时清理内存的broadcast,内存里面找不到,不会报错,会重新去磁盘拿,磁盘上要是还没有了就GG
EXTRA_EXECUTOR_OPTS也加上
数据量太大导致执行时间超过4小时,ttl默认清理了相关内存,导致中间变量找不到了
解决方法 :1、减少数据量 2、修改相关配置参数,增大清理时间和超时时间,但是需要重启inceptor集群
相关sql语句看能不能再增加过滤条件以减少数据量,减少执行时间