Улей индексирование было введено в Улей 0.7.0 ( HIVE-417 ) и удалено в Улей 3.0 ( HIVE-18448 ). Пожалуйста, прочитайте комментарии в этомJira.Эта функция была совершенно бесполезной в Hive.Эти индексы были слишком дороги для больших данных, RIP.
По состоянию на Hive 2.1.0 ( HIVE-13290 ) Hive включает поддержку неподтвержденных ограничений первичного и внешнего ключей .Эти ограничения не проверены, исходная система должна обеспечить целостность данных перед их загрузкой в Hive.Эти ограничения полезны для инструментов, генерирующих ER-диаграммы и запросы.Также такие неподтвержденные ограничения полезны в качестве самодокументирования.Вы можете легко узнать, что должно быть PK, если таблица имеет такое ограничение.
В базе данных Oracle Unique ограничения PK и FK поддерживаются индексами, поэтому они могут работать быстро и действительно полезны.Но это не то, как работает Hive, и для чего он был разработан.
Весьма нормальный сценарий, когда вы загружаете очень большой файл с полуструктурированными данными в HDFS.Построение индекса по нему слишком дорого, и без индекса, чтобы проверить нарушение PK, возможно только сканирование всех данных.И обычно вы не можете применить ограничения в BigData.Процесс вверх по течению может позаботиться о целостности и согласованности данных, но это не гарантирует, что в конечном итоге у вас не будет нарушения PK в Hive в какой-то большой таблице, загруженной из разных источников.
Некоторые форматы хранения файлов, такие как ORC имеют внутренние легковесные «индексы» для ускорения фильтрации и включения предиката push down (PPD), с помощью таких индексов не применяются ограничения PK и FK.Это невозможно сделать, потому что обычно в Hive может быть много таких файлов, принадлежащих к одной и той же таблице, и даже файлы могут иметь разные схемы.Hive создан для петабайт, и вы можете обрабатывать петабайты за один прогон, данные могут быть полуструктурированными, файлы могут иметь разные схемы.Hadoop не поддерживает случайные записи, и это добавляет дополнительные сложности и затраты, если вы хотите перестроить индексы.