用hive生成数据的时候,是没有_SUCCESS文件的。
但是MR和Spark程序落盘后都会有这么个文件,代表程序运行成功。
举个例子,比如我们有两个spark任务:A任务和B任务。B任务依赖于A任务,也就是说B任务要根据A任务的结果再判断是否运行。这时我们就可以根据A任务的输出目录下是否有_SUCCESS文件来判断A任务是否运行成功。
但是在HDFS数据往Druid里摄入的时候,有_SUCCESS文件会使任务报错,因此可以在Spark代码侧加以限制,不生成_SUCCESS文件即可。
在Spark的Driver端参数里加上如下参数即可。
sc.hadoopConfiguration.set("mapreduce.fileoutputcommitter.marksuccessfuljobs", "false")