写入过程产生过多小文件是因为多线程并行向hdfs写入造成的,所以可以再save之前设置dataframe的partitions设置为0,但是这样设置一定会影响spark写入的性能
val result: DataFrame = WorkOperator ( dataFrame, sparkSession ).controller ( operator )
//df保存到hdfs
//coalesce中的参数是指定写到hdfs的block的个数,避免产生过多的小文件,但是提前需要预估dataframe的大小
val value: Dataset[Row] = result.coalesce(1)
value.write.mode(SaveMode.Overwrite).save(dataDir + name)
使用上述方法进行设置,需要预估dataframe的大小,根据这个大小设置block的多少,保证了spark的性能
本文探讨了在使用Spark进行大数据处理时,如何通过调整DataFrame的分区数量来优化写入HDFS的性能,避免产生过多小文件。介绍了在保存前将partitions设置为特定值的方法,并强调了在设置时需要预估DataFrame大小的重要性。

223

被折叠的 条评论
为什么被折叠?



