参数设置:
set tez.queue.name=${USER_QUEUE};
set hive.execution.engine=tez;
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.dynamic.partitions=100000;
set hive.exec.max.dynamic.partitions.pernode=100000;
set hive.optimize.sort.dynamic.partition=true;
--并行度
set hive.exec.parallel=true
set hive.exec.parallel.thread.number=16
--合并小文件,减少map数
set mapred.max.split.size=100000000;
set mapred.min.split.size.per.node=100000000;
set mapred.min.split.size.per.rack=100000000;
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
--设置map端输出进行合并,默认为true
set hive.merge.mapfiles = true
--设置reduce端输出进行合并,默认为false
set hive.merge.mapredfiles = true
--设置合并文件的大小
set hive.merge.size.per.task = 256*1000*1000
--当输出文件的平均大小小于该值时,启动一个独立的MapReduce任务进行文件merge。
set hive.merge.smallfiles.avgsize=16000000
--reduce设置
set spark.reducer.maxSizeInFlight=96m;
set mapreduce.reduce.memory.mb=10240;
set mapreduce.reduce.java.opts=-xmx4096m;
--防止数据倾斜,Map 端进行聚合操作
set hive.map.aggr=true;
--有数据倾斜的时候进行负载均衡
set hive.groupby.skewindata=true;
set spark.reducer.maxSizeInFlight=96m;
set mapreduce.reduce.memory.mb=5120;
set mapreduce.reduce.java.opts=-xmx4096m;
--spark-sql
set spark.sql.shuffle.partitions=600;
set spark.shuffle.file.buffer=128k;
set spark.shuffle.memoryFraction=0.4;
set spark.shffle.manager=hash;
set spark.shuffle.consolidateFiles=true;
set spark.sql.files.maxPartitionBytes=134217728;
set spark.sql.adaptive.shuffle.targetPostShuffleInputSize=134217728b;
set spark.sql.adaptive.enabled=true;
set parquet.block.size=33554432;
-- 需为true,否则hive无法识别spark-sql写的parquet
set spark.sql.parquet.writeLegacyFormat=true;
引入外部文件至hive的lib包:
add file hive的lib包路径/xx.json;
add jar hive的lib包路径/xx.jar;
创建临时函数:
create temporary function 函数名 as ‘jar包的mian方法路径’
create temporary function A as 'com.XX.XX.hive.udf.ClearCsv';
持续更新中。。。



