Oracle
 sql >> Base de données >  >> RDS >> Oracle

Les clés primaires et les index dans le langage de requête Hive sont-ils possibles ou non ?

L'indexation Hive a été introduite dans Hive 0.7.0 (HIVE-417) et supprimée dans Hive 3.0 (HIVE-18448) Veuillez lire les commentaires dans ce Jira. La fonctionnalité était complètement inutile dans Hive. Ces index étaient trop chers pour le Big Data, RIP.

Depuis Hive 2.1.0 (HIVE-13290) Hive inclut la prise en charge des contraintes de clé primaire et étrangère non validées . Ces contraintes ne sont pas validées, un système en amont doit garantir l'intégrité des données avant de les charger dans Hive. Ces contraintes sont utiles pour les outils générant des diagrammes ER et des requêtes. De telles contraintes non validées sont également utiles en tant qu'auto-documentation. Vous pouvez facilement découvrir ce qui est censé être un PK si la table a une telle contrainte.

Dans la base de données Oracle Unique, les contraintes PK et FK sont soutenues par des index, elles peuvent donc fonctionner rapidement et sont vraiment utiles. Mais ce n'est pas ainsi que Hive fonctionne et pour quoi il a été conçu.

Un scénario tout à fait normal est lorsque vous avez chargé un très gros fichier avec des données semi-structurées dans HDFS. Construire un index dessus est trop coûteux et sans index pour vérifier la violation de PK, il n'est possible que d'analyser toutes les données. Et normalement, vous ne pouvez pas appliquer de contraintes dans BigData. Le processus en amont peut prendre soin de l'intégrité et de la cohérence des données, mais cela ne garantit pas que vous n'aurez finalement pas de violation PK dans Hive dans une grande table chargée à partir de différentes sources.

Certains formats de stockage de fichiers comme ORC ont des "index" internes légers pour accélérer le filtrage et permettre le push down de prédicat (PPD), aucune contrainte PK et FK n'est implémentée à l'aide de ces index. Cela ne peut pas être fait car normalement, vous pouvez avoir de nombreux fichiers de ce type appartenant à la même table dans Hive et les fichiers peuvent même avoir des schémas différents. Hive créé pour les pétaoctets et vous pouvez traiter des pétaoctets en une seule fois, les données peuvent être semi-structurées, les fichiers peuvent avoir différents schémas. Hadoop ne prend pas en charge les écritures aléatoires, ce qui ajoute plus de complications et de coûts si vous souhaitez reconstruire des index.