hive.merge.mapfiles 在 map-only job后合并文件,默认true hive.merge.mapredfiles 在map-reduce job后合并文件,默认false hive.merge.size.per.task 合并后每个文件的大小,默认256000000 hive.merge.smallfiles.avgsize 平均文件大小,是决定是否执行合并操作的阈值,默认16000000
SparkConf conf = new SparkConf();
conf.set("spark.sql.adaptive.enabled", "true");
conf.set("spark.sql.adaptive.shuffle.targetPostShuffleInputSize", "67108864b");
conf.set("spark.sql.adaptive.join.enabled", "true");
conf.set("spark.sql.autoBroadcastJoinThreshold", "20971520");
SparkSession spark = SparkSession
.builder()
.appName("JointSitePlan")
.master("local")
.config(conf)
.enableHiveSupport()
.getOrCreate();
shuffle partition是通过参数spark.sql.shuffle.partitions来指定的,默认是200,但是对于数据不大,或者数据倾斜的情况,会生成很多的小文件,几兆甚至几KB大小,自适应执行则会根据参数 spark.sql.adaptive.shuffle.targetPostShuffleInputSize 动态调整reducer数量,详细可见 上一篇文章
所有评论(0)