HIVE: Ошибка вставки запроса с ошибкой java.lang.OutOfMemoryError: превышен предел накладных расходов GC

Запрос на вставку моего улья не удался из-за ошибки ниже: java.lang.OutOfMemoryError: превышен предел накладных расходов GC

Данные в таблице 2 = 1,7 ТБ Запрос:

set hive.exec.dynamic.partition.mode= nonstrict;set hive.exec.dynamic.partition=true;set mapreduce.map.memory.mb=15000;set mapreduce.map.java.opts=-Xmx9000m;set mapreduce.reduce.memory.mb=15000;set mapreduce.reduce.java.opts=-Xmx9000m;set hive.rpc.query.plan=true;
insert into database1.table1 PARTITION(trans_date) select * from database1.table2;

Информация об ошибке: запуск задания 1 из 1. Количество задач сокращения установлено на 0, так как нет оператора сокращения. СБОЙ: ошибка выполнения, код возврата -101 из org.apache.hadoop.hive.ql.exec.mr.MapRedTask. Превышен предел накладных расходов GC

информация о кластере: общий объем памяти: 1,2 ТБ, общее количество виртуальных ядер: 288 узлов: 8 узлов, версия: 2.7.0-mapr-1808

Обратите внимание: я пытаюсь вставить данные из таблицы 2 в формате паркета в таблицу 1 в формате ORC. общий размер данных составляет 1,8 ТБ.


person kumar saurabh    schedule 16.01.2020    source источник
comment
Можете ли вы попробовать установить этот набор hive.optimize.sort.dynamic.partition = true; Это может помочь.   -  person Ramdev Sharma    schedule 16.01.2020


Ответы (1)


Добавление распределения по ключу раздела должно решить проблему:

insert into database1.table1 PARTITION(trans_date) select * from database1.table2
distribute by trans_date;

distribute by trans_date запустит шаг редуктора, и каждый редуктор будет обрабатывать один раздел, это снизит нагрузку на память. Когда каждый процесс записывает много разделов, он сохраняет в памяти слишком много буферов для ORC.

Также рассмотрите возможность добавления этого параметра, чтобы контролировать, сколько данных будет обрабатывать каждый редуктор:

set hive.exec.reducers.bytes.per.reducer=67108864; --this is example only, reduce the figure to increase parallelism
person leftjoin    schedule 16.01.2020