Прежде всего, необходимо понять, как улей обрабатывает запрос:
При выполнении «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.