经常看到一些老铁问这么个一个问题。明明我的task已经完成了,为什么作业就是不结束那?
遇到这个问题,如果没有经验,那么最有效的办法就是去跟踪日志。可是很多老铁可能觉得跟踪日志比较麻烦,然后这个问题就根本无法解决了。
这里简单总结下。
其中一个原因可能是Spark与Hadoop相结合,在保存saveAsHadoopFile为hdfs文件的时候,使用到了FileOutputCommitter这个类,mapreduce.fileoutputcommitter.algorithm.version默认参数为1,如何想改变参数,可以通过程序改变设置参数为2:
dataset.write.option("mapreduce.fileoutputcommitter.algorithm.version", "2")。
或则通过配置文件修改也是可以的。
这个应该只在hadoop2.x中遇到,hadoop3.x应该已经解决掉这个问题。