标签:csdn mod master highlight builder splay tail https ORC
|
1
2
3
4
|
hive.merge.mapfiles 在 map-only job后合并文件,默认truehive.merge.mapredfiles 在map-reduce job后合并文件,默认falsehive.merge.size.per.task 合并后每个文件的大小,默认256000000hive.merge.smallfiles.avgsize 平均文件大小,是决定是否执行合并操作的阈值,默认16000000 |
set hive.merge.mapfiles = true:在只有map的作业结束时合并小文件, set hive.merge.mapredfiles = true:在Map-Reduce的任务结束时合并小文件,默认为False; set hive.merge.size.per.task = 256000000; 合并后每个文件的大小,默认256000000 set hive.merge.smallfiles.avgsize=256000000; 当输出文件的平均大小小于该值时并且(mapfiles和mapredfiles为true)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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数量.
附:
我在spark sql执行insert overwrite操作时,仅加了set spark.sql.hive.mergeFiles=true; 也可以有效阻止小文件的产生,可能是因为我的数据量本身就比较大
参考:
标签:csdn mod master highlight builder splay tail https ORC
原文地址:https://www.cnblogs.com/fnlingnzb-learner/p/13427909.html