Ich hatte nicht das Gefühl, dass die Beispiele aus der Dokumentation angemessen waren, also versuche ich hier eine Antwort.
Am Anfang war nur --hiveconf
und die Variablensubstitution war nicht vorhanden.
Mit der Option --hiveconf
konnten Benutzer Hive-Konfigurationswerte über die Befehlszeile und festlegen Das war's. Alle Hive-Konfigurationswerte werden im Namensbereich hiveconf
gespeichert, d. H.% Co_de%. Mit diesen Werten können Sie beispielsweise die Anzahl der Mapper und Reducer steuern, ob Statusmeldungen angezeigt werden sollen und ob das Skript bei Fehlern fortfahren soll.
Später wurde die Variablensubstitution hinzugefügt . Dies bedeutet, dass Sie nun Variablen in Abfragen mit der hiveconf:mapred.reduce.tasks
-Syntax verwenden können. Die einzigen Variablen, die Sie über die Befehlszeile festlegen konnten, waren jedoch unter dem ${...}
- Namespace mit hiveconf
. Daher stellen Benutzer ihre Variablen dort ein.
Wenn Sie Ihre persönlichen Variablen unter den Namespace der Hive-Konfiguration stellen, wird das wahrscheinlich nichts kaputt machen, aber es ist auch keine gute Form. Später wurde vorgeschlagen , dass ein --hiveconf
-Namespace speziell für Benutzervariablen hinzugefügt wird, die ebenfalls definiert werden können in der Befehlszeile mit hivevar
. Dies bedeutete eine sauberere Trennung zwischen Hive-Konfigurationswerten und benutzerdefinierten Variablen.
Zusammenfassend:
Der Namespace --hivevar
und hiveconf
sollten verwendet werden, um Hive-Konfigurationswerte festzulegen.
Der Namensraum --hiveconf
und hivevar
sollten verwendet werden, um Benutzervariablen zu definieren.
Das Setzen von Benutzervariablen unter dem --hivevar
Namespace wird wahrscheinlich nichts brechen, wird aber nicht empfohlen.
@Llama hat es ausführlich erklärt, zusammen mit dem Unterschied, dass auf beide Arten von Variablen zugegriffen wird.
Auf die Variablen --hivevar
wird mit ${var-name}
zugegriffen, während auf die --hiveconf
in der Struktur ${hiveconf:var-name}
zugegriffen wird.
z.B. Unterhalb von Beispielen greifen Sie auf die Variable zu und drucken Sie ihren Wert in der Struktur.
hivevar:
%Vor% Ausgabe: this is a
hiveconf:
%Vor% Ausgabe: this is a
Sie können dies für die difference
beziehenEs gibt drei Namensräume für Variablen - hiveconf, system und env. ( Benutzerdefinierte Variablen können auch in einem separaten Namespace mit der Option define oder hivevar in Hive 0.8.0 erstellt werden und spätere Versionen.)