Spark sparkSQL避免输出过多小文件

val sparkConf = new SparkConf()
sparkConf.set("spark.sql.adaptive.enabled", "true")
sparkConf.set("spark.sql.adaptive.shuffle.targetPostShuffleInputSize", String.valueOf(10 * 1024 * 1024))

参考文档:https://www.cnblogs.com/flymin/p/11345646.html

如果配置以上参数还是有问题则在写HDFS之前进行repartition,这样就能控制写入并发(一个并发写一个文件)。如果任务中有多次写入操作最好通过union将多个RDD联合起来一起写入。eg:

val saveRDD = eventRDD.union(rdd1)
      .union(rdd2)
      .union(rdd3)
      .repartition(16)
saveRDD2Table(spark, saveRDD)
如果觉得我的文章对你有用,请随意赞赏