Zurückgeben mehrerer Arrays aus der benutzerdefinierten Aggregatfunktion (UDAF) in Apache Spark SQL

8

Ich versuche, eine benutzerdefinierte Aggregatfunktion (UDAF) in Java mit Apache Spark SQL zu erstellen, die nach Abschluss mehrere Arrays zurückgibt. Ich habe online gesucht und kann keine Beispiele oder Vorschläge dazu finden.

Ich kann ein einzelnes Array zurückgeben, kann aber nicht herausfinden, wie die Daten im richtigen Format in der Methode evaluate () für die Rückgabe mehrerer Arrays abgerufen werden.

Der UDAF funktioniert, da ich die Arrays in der evaluate () -Methode ausdrucken kann, ich kann einfach nicht herausfinden, wie diese Arrays an den aufrufenden Code zurückgegeben werden (der unten als Referenz gezeigt wird).

%Vor%

Ich habe die gesamte benutzerdefinierte UDAF-Klasse unten eingefügt, aber die wichtigsten Methoden sind die dataType () und evaluate-Methoden (), die zuerst angezeigt werden.

Jede Hilfe oder Beratung wäre sehr willkommen. Danke.

%Vor%

Update : Basierend auf der Antwort von zero323 konnte ich zwei Arrays mit:

zurückgeben %Vor%

Das Herausholen der Daten war ein wenig mühsam, aber das Dekonstruieren des DataFrame in Java-Listen und dann das Zurückbauen zu einem DataFrame.

    
ab853 26.11.2015, 13:12
quelle

1 Antwort

5

Soweit ich sagen kann, sollte ein Tupel gerade genug sein. In Scala:

%Vor%     
zero323 27.11.2015, 03:04
quelle