2017-01-26 3 views
1

У меня есть таблица, stop_logs в HIVE. Когда я запускаю запрос вставки около 6000 строк, он занимает 300 секунд, где, как если бы я запускал только запрос SELECT, он заканчивается через 6 секунд. Почему вставка занимает много времени?Вставить в HIVE Внешняя таблица очень медленная

CREATE TABLE stop_logs (event STRING, loadId STRING) 
STORED AS SEQUENCEFILE; 

После занимает 300 сек:

INSERT INTO TABLE stop_logs 
    SELECT 
    i.event, i.loadId 
    FROM 
    event_logs i 
    WHERE 
    i.stopId IS NOT NULL; 
; 

После запроса занимает 6 секунд.

SELECT 
    i.event, i.loadId 
    FROM 
    event_logs i 
    WHERE 
    i.stopId IS NOT NULL; 
; 

ответ

1

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

При выполнении «select * from < имя_таблицы>», улей извлекает все данные из файла в качестве FetchTask, а не задание mapreduce, которое просто выгружает данные, поскольку оно ничего не делает на нем. Это похоже на «hadoop dfs -text». Поскольку он не запускает задачу по уменьшению количества карт, она работает быстрее.

при использовании «выберите а, Ь из < имя_таблицы>», Hive требует заданий картографического уменьшить, так как для этого нужно извлечь «столбец» из каждой строки путем разбора его из загружаемого файла.

При использовании «вставить в таблице stop_logs выбрать, б из event_logs» заявления, сначала выберите пробеги заявления, которые инициируют Map-Reduce работы, так как она должна извлечь «столбец» из каждой строки, анализируя его из загружать его и вставлять в другую таблицу (stop_logs), он запускает еще одну задачу уменьшения карты, чтобы значения, вставленные в столбцы a и b в «stop_logs», сопоставляли их столбцам a и b, соответственно, для вставки в новую строку.

Другая причина медлительности это проверить Если «hive.typecheck.on.insert» установлен истине, из-за того, что значения проверяются, преобразуется и нормировано в соответствии с их типами столбцов (Улей 0.12.0 вперед) при вставке в таблицу, что также приводит к тому, что вставка выполняется медленнее, чем сравнение с оператором select.

Смежные вопросы