(1)hive-sql
参数设置:
set tez.queue.name=${USER_QUEUE};
set hive.execution.engine=tez;
--要求不检查笛卡尔积
set hive.strict.checks.cartesian.product=false
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
--防止数据倾斜,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;
(2)spark-sql
查看 spark版本
spark-submit --version
Spark 配置 (apachecn.org)http://spark.apachecn.org/#/docs/20spark-submit 设置参数
spark-shell 设置参数
--设置网络延时时间
set spark.network.timeout
=300;
--并行度
set spark.sql.shuffle.partitions=600;
set spark.default.parallelism=600
--动态调整资源
set spark.sql.adaptive.enabled=true;
set spark.sql.adaptive.shuffle.targetPostShuffleInputSize=134217728b;
--动态分区
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.optimize.sort.dynamic.partition=true;
set mapreduce.job.reduces=16;
--任务内存参数配置
set spark.memory.fraction=0.4
--慢任务推测参数配置:
set spark.speculation=true
set spark.speculation.interval=60s
set spark.speculation.multiplier=1.3
set spark.speculation.quantile=0.99
--产出文件数量进行动态调整,让文件大小尽量在200M~256M左右
set spark.dynamicAllocation.minExecutors=1000set spark.dynamicAllocation.maxExecutors=1600
--Shuffle参数配置
该参数用于设置shuffle write task的BufferedOutputStream的buffer缓冲大小
set spark.shuffle.file.buffer=128k;
设置shuffle read task的buffer缓冲大小,而这个buffer缓冲决定了每次能够拉取多少数据
set spark.reducer.maxSizeInFlight=96m;
特别耗时的shuffle操作的作业,建议增加重试最大次数(比如60次)
set spark.shuffle.io.maxRetries=60;
每次重试拉取数据的等待间隔,大间隔时长,以增加shuffle操作的稳定性
set spark.shuffle.io.retryWait=60s;
分配给shuffle read task进行聚合操作的内存比例
set spark.shuffle.memoryFraction=0.4;
如果使用HashShuffleManager,该参数有效。如果设置为true,那么就会开启consolidate机制,会大幅度合并shuffle write的输出文件
set spark.shffle.manager=hash;
set spark.shuffle.consolidateFiles=true;
set spark.sql.files.maxPartitionBytes=134217728;
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';
持续更新中。。。