Hive: Что произойдет, если я вручную скопирую файлы данных в папку местоположения таблицы? - PullRequest
0 голосов
/ 25 декабря 2018

Я попытался скопировать файлы данных в папку местоположения таблицы (вместо того, чтобы использовать команду загрузки), и это работает в том смысле, что я могу запрашивать новые данные.Однако все источники, которые я вижу, всегда будут использовать команду load для этого;они никогда не говорят о копировании файлов данных непосредственно в папку местоположения.У меня складывается впечатление, что копирование файлов непосредственно в папку местоположений не очень хорошая идея, но я не вижу объяснения, почему это плохая идея.

Кто-нибудь знает, почему файлы данных не следует копироватьнепосредственно в папку расположения таблицы?

Ответы [ 3 ]

0 голосов
/ 25 декабря 2018

Ответ на этот вопрос будет зависеть от того, является ли таблица управляемой таблицей Hive по сравнению с внешней таблицей.

Обычно внешние таблицы не объединяются или не разбиваются, то есть управляются каким-либо внешним процессом.В этом случае должно быть прекрасно размещать файлы там, пока у вас есть механизм управления данными.

Управляемые таблицы Hive - это отдельная история.Hive управляет разделами, разбивая файлы на папки (и подпапки).Ведра управляются путем хеширования ключей в разные файлы.В этих случаях вы, скорее всего, получите непредсказуемые результаты или ошибки, если поместите файлы в эти папки по своему усмотрению.

Это становится еще сложнее в случае таблиц транзакций, требующих сжатия (и до тех пор, пока Hive 2.0 не потребует группирования)

0 голосов
/ 25 декабря 2018

В Hive предыдущей версии 3.0 Операции загрузки - это чистые операции копирования / перемещения, которые перемещают файлы данных в места, соответствующие таблицам / разделам Hive.

Дополнительные операции загрузки поддерживаются Hive 3.0 и более поздними версиями, поскольку Hive внутренне перезаписывает загрузку вВСТАВИТЬ КАК ВЫБРАТЬ.В Hive 3.0 и более поздних команда LOAD также заботится о разделах и сегментах.

Подробнее см. Документацию: Загрузка файлов в таблицы .

0 голосов
/ 25 декабря 2018

Вы можете скопировать данные непосредственно в расположение таблицы, и они будут отражены в запросах.Но если таблица является многораздельной, и если файлы содержат данные для более чем одного раздела, простое копирование файлов вам не поможет, в этом случае вам нужно загрузить данные с помощью команды load.

ЕслиВаш файл содержит данные для одного раздела. Вы можете скопировать этот файл в этот конкретный раздел и выполнить восстановление таблицы msck, это обновит метаданные таблицы, и результаты будут отражены в вашем запросе.

...