Ich habe eine benutzerdefinierte UDF in Hive erstellt, es ist in Hive-Befehlszeile getestet und funktioniert gut. Also jetzt habe ich die JAR-Datei für die UDF, was ich tun muss, damit Benutzer temporäre Funktion erstellen können, die darauf zeigt? Im Idealfall von Eingabeaufforderung von Hive Ich würde dies tun: -Wie kann JAR für benutzerdefinierte Hive-UDF hinzugefügt werden, sodass es dauerhaft im HDInsight-Cluster verfügbar ist?
hive> add jar myudf.jar;
Added [myudf.jar] to class path
Added resources: [myudf.jar]
hive> create temporary function foo as 'mypackage.CustomUDF';
Danach ich in der Lage bin, die Funktion richtig zu verwenden.
Aber ich möchte Jar nicht jedes Mal hinzufügen, wenn ich die Funktion ausführen möchte. Ich sollte diese Funktion ausführen, während der Lage sein: -
- Ausführung Hive Abfrage HDInsight Cluster von Visual Studio
- Ausführung Hive Abfrage von der Kommandozeile über SSH (Linux) oder RDP/cmd (Windows)
- Ausführung Hive Abfrage von Ambari (Linux) Hive Ansicht
- Ausführung Hive Abfrage von HDinsight Abfrage Console Hive Editor (Windows Cluster)
So, Egal wie ich die Abfrage ausführe, die JAR sollte bereits verfügbar sein und dem Pfad hinzugefügt werden. Wie kann dies sowohl für Linux als auch für Windows Cluster sichergestellt werden?
prüfen .. https://issues.apache.org/jira/browse/HIVE-6047 https://issues.apache.org/jira/secure/attachment/12626615/PermanentFunctionsinHive.pdf – Munesh
Dies ist nicht was ich meinte. Es macht mir nichts aus, mich mit dem Befehl add jar neu zu registrieren. Die Frage lautete, JAR zu Pfad nicht permanent UDF hinzuzufügen. Ich wollte die Schritte (wo JAR usw. zu kopieren ist) verstehen, damit sie über Hive verfügbar sind, unabhängig davon, wie auf Hive für diesen Cluster zugegriffen wird. Ab sofort kann ich eine Verbindung zum Cluster (headnode) herstellen, indem ich SSH verwende und JAR in mein Home-Verzeichnis von headnode kopiere und den Befehl add jar absetze. Aber was ist, wenn ich Hive über die Web-Benutzeroberfläche (HDInsight Hive Editor) oder Ambari Hive View verwende oder Visual Studio verwende, um den Befehl auszugeben? – Dhiraj
Um es weiter zu verdeutlichen, habe ich mit RDP den Headnode des HDInsight Hadoop (Windows) Clusters verbunden. Die JAR-Datei wurde in einen der Ordner kopiert, der sich bereits im Systempfad befand (erscheint als einer der Ordner in der PATH-Variablen für Windows). Immer noch, als ich den Befehl "add jar" von der Hive-Eingabeaufforderung ausgab, hieß es, dass die JAR-Datei nicht gefunden wurde. Das möchte ich vermeiden. Es sieht so aus, als hätte Hive eine eigene Pfadvariable. – Dhiraj