1. enable ppd(predicate pushdown)
hive.optimize.ppd = true;
select시 filter 조건으로 인한 효율성이 더 클 경우 join보다 filter 조건을 먼저 수행하도록 함.
select a.*, b.* from user a join department d on a.part_id = b.pard_id
where b.part_name = '영업부';
part_name은 DB에서 처리에서 처리되고 나머지 표현은 hive에서 처리됨.
2. map number 최적화
1) mappers 수를 조정하기 위해 아래 옵션을 사용하여 조정
mapreduce.input.fileinputformat.split.maxsize
mapreduce.input.fileinputformat.split.minsize -- old version 설정
mapred.max.split.size = 3000
mapred.min.split.size = 3000 -- new version
작업할 파일 대상이 10000bytes라면 해당 파일에 대한 작업 3개로 나누어서
진행함, 만약 input split 사이즈가 지정되어 있지 않으면 hdfs block 사이즈에
맞춰 mapper 개수가 지정됨
hive.merge.mapfiles=true
map job이 끝나면 작업 파일들을 merge함
hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
같은 노드에 있는 minsize보다 작은 파일들을 merge 함