2015-10-27 10 views
7

ich einen Bienenstock UDF in Java entwickelt haben, die richtig funktioniert, meine Funktion, um die beste Übereinstimmung zwischen dem Eingang und einer Spalte in einem Bienenstock Tisch zurückkehren, so dass er haben diese vereinfachte Pseudocode:Hive UDF, die verwenden Hive Tabelle

class myudf extends udf{ 

    evaluate(Text input){ 

     getNewHiveConnection(); //i want to replace this by getCurrentHiveUserConnetion(); 
     executeHiveQuery(input); 
     return something; 
} 

Meine Frage ist, wenn diese Funktion von Hive aufgerufen wird, warum muss ich in meinem Code mit Hive verbinden? Kann ich die aktuelle Verbindung benutzen, mit der der Benutzer verbunden ist, der meine Funktion benutzt?

Antwort

-2

Ja - Sie können die UDF dauerhaft machen. Zum Beispiel:

CREATE FUNCTION MatchFinder as 'com.mycompany.packagex.myudf' using jar  'hdfs:///an_HDFS_directory/my_jar_name.jar'; 

Dadurch wird Ihre Funktion dauerhaft und jeder wird es anrufen können. In diesem Fall wird die JAR-Datei zur leichteren Zugänglichkeit in HDFS gespeichert, aber es gibt andere Optionen.

Weitere Informationen finden Sie unter Hive wiki.

+0

Dies ist nicht das, was ich suche, ich möchte die aktuelle Verbindung verwenden, die von dem Benutzer verwendet wird, der mein udf aufruft, anstatt neue Verbindung zu erstellen, nur um es schneller zu machen. – 54l3d