Вставка будет выполнять то же самое во всех ваших случаях, потому что вставка не запрашивает ваши существующие данные (если вы не вставляете, используя выбор из себя), и обычно каждый контейнер создает свой собственный файл, если не настроено слияние файлов.
Запрос данных с использованием диапазона дат будет работать лучше, если таблица будет разбита по дате. Слишком много файлов может привести к снижению производительности, поэтому вы можете захотеть объединить файлы во время вставки. Что такое слишком много файлов? Как сотни или даже тысячи за ежедневный раздел. Наличие нескольких файлов на раздел не вызовет проблем с производительностью, вам не нужно объединять их.
Оператор вставки создаст дополнительные файлы в каталоге разделов и обычно не будет сливаться с существующими файлами. Сколько файлов будет создано, зависит от оператора вставки и настроек конфигурации.
Количество работающих конечных картографов или редукторов + параметры конфигурации будут определять количество выходных файлов. Вы можете принудительно запустить его на одном редукторе, например, добавив предложение 'order by'. В этом случае будет создан один дополнительный файл на раздел, но он будет работать медленно.
Также distribute by partition key
может использоваться для уменьшения количества создаваемых файлов, но это вызовет дополнительный этап редуктора и будет работать медленнее, чем задача только для карты.
Также вы можете объединить новые файлы с существующими, используя следующие настройки:
SET hive.merge.mapfiles=true;
SET hive.merge.mapredfiles=true;
SET hive.merge.size.per.task=128000000; -- (128MB)
SET hive.merge.smallfiles.avgsize=128000000; -- (128MB)
Эти параметры конфигурации могут запускать задачу слияния (в зависимости от размеров, настроенных в указанных выше настройках) в конце, и она объединит как существующие файлы, так и новые, добавленные путем вставки.
См. Этот ответ для более подробной информации о слиянии: https://stackoverflow.com/a/45266244/2700344
На самом деле тип таблицы, управляемой или внешней, не имеет значения в этом контексте. Вставить или выбрать будет работать так же.
Если у вас уже есть файлы в том же формате, что и таблица назначения, то самый быстрый способ - поместить их в каталоги разделов без использования запроса DML вообще.
Для файлов ORC вы можете эффективно объединять файлы с помощью этой команды: ALTER TABLE T [PARTITION partition_spec] CONCATENATE;