Hive ERROR: Out of memory due to hash maps used in map-side aggregation
Possible error: Out of memory due to hash maps used in map-side aggregation.
Solution: Currently hive.map.aggr.hash.percentmemory is set to 0.5. Try setting it to a lower value. i.e 'set hive.map.aggr.hash.percentmemory = 0.25;'
task 보기 실패 정보:
Error:GC overhead limit exceeded
이 오류는 일반적으로 두 가지 상황으로 인해 발생한다. (1)hivesql이 불합리하게 써서 실행할 때hashmap이 너무 크다.(2)hivesql는 최적화의 여지가 없다.
(1)에 대해서는 sql 문장을 바꾸어hashmap의 크기를 낮춘다.(2)의 경우 매개변수를 조정할 수 있습니다.
다음은 (1) 및 (2) 상황에 대한 설명입니다.
(1) sql 문장 바꾸기
select count(distinct v) from tbl;
select count(1) from (select v from tbl group by v) t;
설명:hashmap의 키 개수 감소
select collect_set(messageDate)[0],count(*) from incidents_hive group by substr(messageDate,8,2);
select hourNum, count(1) from (select substr(messageDate,9,2) as hourNum from incidents_hive ) t group by hourNum;
설명:hashmap의 키 개수를 줄이지 않았지만value의 크기를 줄였습니다
(2) 매개변수 조정
이 sql 문장은 최적화할 수 없습니다. (keywords의 중복률이 낮기 때문에 맵 단계에서 유지되는 메모리 맵 대상이 매우 크기 때문) 해시맵의 크기를 낮출 수 있습니다.
INSERT OVERWRITE TABLE hbase_table_poi_keywords_count SELECT concat(substr(key,0,8), svccode, keywords), substr(key,0,8), svccode, keywords, count(*) where substr(key,0,8)=\"$yesterday\" AND length(keywords)>0 AND svccode is not null GROUP BY substr(key,0,8),svccode,keywords;
mapjoin과 map aggregate와 관련된 최적화 매개 변수는 다음과 같습니다.
hive.map.aggr
hive.groupby.mapaggr.checkinterval
hive.map.aggr.hash.min.reduction
hive.map.aggr.hash.percentmemory
hive.groupby.skewindata
위의 매개 변수는 구성 파일 설명인 문서를 보고 조정할 수 있습니다.만약 수요가 이 매개 변수를 조정해서 도달할 수 없다면, set hive.map.aggr=false가 최종 방안입니다. 이것은 틀림없이 당신의 요구를 만족시킬 수 있습니다. 단지 실행 속도가 맵join과mapaggr보다 느릴 뿐입니다. 그러나 실제 데이터를 통해 당신은 사실 그것도 느리지 않다는 것을 발견할 수 있습니다.
참고 자료:
http://blog.csdn.net/macyang/article/details/9260777 http://www.myexception.cn/open-source/1487747.html http://blog.csdn.net/lixucpf/article/details/20458617
INSERT OVERWRITE TABLE hbase_table_poi_keywords_count SELECT concat(substr(key,0,8), svccode, keywords), substr(key,0,8), svccode, keywords, count(*) where substr(key,0,8)=\"$yesterday\" AND length(keywords)>0 AND svccode is not null GROUP BY substr(key,0,8),svccode,keywords;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.