设置网站关键词怎么做,it运维服务外包,页面设计结构的特色,网站建设前景如何Spark写入HDFS数据SUCCESS文件 1、_SUCCESS的控制2、_SUCCESS的实现 1、_SUCCESS的控制 与Hive不同#xff0c;MapReduce和Spark在执行写入HDFS数据任务时#xff0c;数据输出目录一般都会有一个名为_SUCCESS的空文件#xff0c;该文件仅用来表示任务执行成功
但有些时候MapReduce和Spark在执行写入HDFS数据任务时数据输出目录一般都会有一个名为_SUCCESS的空文件该文件仅用来表示任务执行成功
但有些时候在读取HDFS中的数据时有_SUCCESS文件会使任务报错。此时可以在 Spark代码中加以限制不生成_SUCCESS文件即可
在Spark的Driver端配置如下参数
sc.hadoopConfiguration.set(mapreduce.fileoutputcommitter.marksuccessfuljobs, false)或在SparkSQL中配置如下参数
set mapreduce.fileoutputcommitter.marksuccessfuljobsfalse;2、_SUCCESS的实现 在Hadoop的源码中有一个抽象类OutputCommitter专门负责Job的生命周期管理Hadoop默认使用org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter作为具体的实现在FileOutputCommitter的实现中Hadoop会根据参数mapreduce.fileoutputcommitter.marksuccessfuljobs的值来判断是否要生成_SUCCESS文件。因为该参数的默认值为true所以我们平常跑的任务基本都会输出_SUCCESS标志文件
Spark则复用了这个OutputCommitter机制Spark任务在运行时会从配置中获取指定的实现类如果没有指定Spark默认会使用org.apache.hadoop.mapred.FileOutputCommitter作为实现
相反Hive则自己实现了一个NullOutputCommitter来作为OutputCommitter的实现类空实现其中的所有方法即什么也不做因此也就无法生成_SUCCESS文件
相关描述参考https://stackoverflow.com/questions/13082606/getting-success-file-for-hive-script
更多源码细节参考文末参考文章 参考文章 https://blog.csdn.net/u013332124/article/details/94468945 https://blog.csdn.net/u013332124/article/details/92001346