Обновляется ли внешняя таблица кустов при добавлении файла в указательный каталог - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть каталог в HDFS, каждый обработанный файл помещается в этот каталог с датой DateTimeStamp в имени файла, если я создаю внешнюю таблицу поверх этого расположения каталога, обновляет ли внешняя таблица, когда каждый день файл приходит и находится в этот каталог ??

1 Ответ

0 голосов
/ 01 сентября 2018

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

Таблица / раздел Hive - это метаданные (DDL, местоположение, статистика, права доступа и т. Д.) Плюс файлы данных в местоположении. Таким образом, данные хранятся в расположении таблицы / раздела в HDFS.

Только если вы создадите новый каталог для нового раздела, который еще не создан , вам нужно будет выполнить команду ALTER TABLE ADD PARTITION LOCATION=<new location> или MSCK REPAIR TABLE. Эквивалентная команда в версии Hive для Amazon Elastic MapReduce (EMR): ALTER TABLE table_name RECOVER PARTITIONS.

Если вы добавляете файлы в уже созданные расположения таблиц / разделов, обновление не требуется.

CBO может использовать статистику для расчета запроса без чтения файлов данных, например count(*). Работает только для простых запросов, таких как count (*), max ().

Если вы используете CBO со статистикой для расчета запроса, вам может потребоваться обновить его, используя ANALYZE TABLE hive_table PARTITION(partitioned_col) COMPUTE STATISTICS. Смотрите этот ответ для более подробной информации: https://stackoverflow.com/a/39914232/2700344

Если вам не нужна статистика и вы хотите, чтобы местоположение таблицы проверялось каждый раз, когда вы запрашиваете ее, отключите ее: set hive.compute.query.using.stats=false;

...