标签:csdn mod master highlight builder splay tail https ORC
1
2
3
4
|
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 |
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