sql >> Database >  >> RDS >> Oracle

Primaire sleutels en indexen in Hive-querytaal zijn mogelijk of niet?

Hive-indexering is geïntroduceerd in Hive 0.7.0 (HIVE-417) en verwijderd in Hive 3.0 (HIVE-18448). Lees de opmerkingen in deze Jira. De functie was volledig nutteloos in Hive. Deze indexen waren te duur voor big data, RIP.

Vanaf Hive 2.1.0 (HIVE-13290) Hive biedt ondersteuning voor niet-gevalideerde primaire en externe sleutelbeperkingen . Deze beperkingen zijn niet gevalideerd, een upstream-systeem moet de gegevensintegriteit waarborgen voordat het in Hive wordt geladen. Deze beperkingen zijn handig voor tools die ER-diagrammen en -query's genereren. Ook dergelijke niet-gevalideerde beperkingen zijn nuttig als zelfdocumentatie. U kunt gemakkelijk achterhalen wat een PK zou moeten zijn als de tabel zo'n beperking heeft.

In Oracle-database Unique worden PK- en FK-beperkingen ondersteund door indexen, zodat ze snel kunnen werken en erg handig zijn. Maar dit is niet hoe Hive werkt en waarvoor het is ontworpen.

Een heel normaal scenario is wanneer u een heel groot bestand met semi-gestructureerde gegevens in HDFS laadt. Het bouwen van een index is te duur en zonder index om te controleren is PK-overtreding alleen mogelijk om alle gegevens te scannen. En normaal gesproken kun je geen beperkingen afdwingen in BigData. Het stroomopwaartse proces kan zorgen voor de integriteit en consistentie van gegevens, maar dit garandeert niet dat u uiteindelijk geen PK-schending in Hive zult hebben in een grote tabel die uit verschillende bronnen wordt geladen.

Sommige bestandsopslagformaten zoals ORC hebben interne lichtgewicht "indexen" om het filteren te versnellen en predicaat push-down (PPD) mogelijk te maken, er worden geen PK- en FK-beperkingen geïmplementeerd met behulp van dergelijke indexen. Dit kan niet worden gedaan omdat u normaal gesproken veel van dergelijke bestanden kunt hebben die tot dezelfde tabel in Hive behoren en bestanden zelfs verschillende schema's kunnen hebben. Hive gemaakt voor petabytes en u kunt petabytes in één keer verwerken, gegevens kunnen semi-gestructureerd zijn, bestanden kunnen verschillende schema's hebben. Hadoop ondersteunt geen willekeurige schrijfbewerkingen en dit voegt meer complicaties en kosten toe als u indexen opnieuw wilt opbouwen.




  1. FOUT:Fout 1005:Kan tabel niet maken (fout:121)

  2. SQLite-trigger

  3. Perl DBI - voer SQL-script uit met meerdere instructies

  4. Som over waarden per maand in milliseconden