Was ist der Unterschied zwischen -hivevar und -hiveconf?

10

Von Bienenstock-h:

%Vor%     
Karnimrod 23.06.2016, 16:23
quelle

4 Antworten

16

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.

    
Mr. Llama 26.01.2017, 18:08
quelle
5

@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

    
Rahul Sharma 26.04.2017 20:52
quelle
0

Kein Unterschied außer dem Namespace. hiveconf und hivevar sind unterschiedliche Namespaces. hivevar namespace wurde hinzugefügt, um den Namespace für Konfigurationseigenschaften und Namespaces von Hive-Variablen zu trennen. Weitere Informationen finden Sie Ссылка .

    
leftjoin 23.06.2016 17:00
quelle
0

Sie können dies für die difference

beziehen

Ссылка

Es 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.)

    
charan tej 24.06.2016 08:06
quelle

Tags und Links