Первичные ключи и индексы на языке запросов Hive возможны или нет? - PullRequest
1 голос
/ 05 июля 2019

Мы пытаемся перенести таблицы оракула в улей и обработать их. В настоящее время таблицы в Oracle имеют ограничения первичного ключа, внешнего ключа и уникального ключа.

Можем ли мы повторить то же самое в hiveql?

Мы проводим некоторый анализ того, как его реализовать.

1 Ответ

0 голосов
/ 11 июля 2019

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

...