Spark-Erstellen von Benutzerdefinierten Spalte, Funktion, Benutzer-definierte Funktion

Ich bin mit Scala und bauen wollen, meine eigene Funktion zu DataFrame. Zum Beispiel möchte ich bei der Behandlung einer Spalte wie ein array Durchlaufen und jedes element, und eine Berechnung.

Um zu beginnen, ich bin zu versuchen, mein eigenes getMax Methode. Also Spalte x die Werte [3,8,2,5,9], und die zu erwartende Ausgang der Verfahren wäre 9.

Hier ist, was es sieht aus wie in Scala

def getMax(inputArray: Array[Int]): Int = {
   var maxValue = inputArray(0)
   for (i <- 1 until inputArray.length if inputArray(i) > maxValue) {
     maxValue = inputArray(i)
   }
   maxValue
}

Dies ist, was ich habe, so weit, und bekomme diese Fehlermeldung

"value length is not a member of org.apache.spark.sql.column", 

und ich weiß nicht, wie sonst zum Durchlaufen der Spalte.

def getMax(col: Column): Column = {
var maxValue = col(0)
for (i <- 1 until col.length if col(i) > maxValue){
    maxValue = col(i)
}
maxValue

}

Sobald ich in der Lage bin umzusetzen, meine eigene Methode erstelle ich eine Spalte mit Funktion

val value_max:org.apache.spark.sql.Column=getMax(df.col(“value”)).as(“value_max”)

Und dann hoffe ich in der Lage sein, diese in einer SQL-Anweisung, beispielsweise

val sample = sqlContext.sql("SELECT value_max(x) FROM table")

und die erwartete Ausgabe wäre 9, Eingang Spalte [3,8,2,5,9]

Bin ich nach einer Antwort aus einem anderen thread Spark-Scala - Wie kann ich die Zeilen iterieren, die in dataframe, und fügen Sie die berechneten Werte als neue Spalten des data Frames, wo Sie eine private Methode für die Standardabweichung.
Die Berechnungen, die ich tun wird, sein, mehr komplexer als diese, (e.g ich vergleichen jedes element in der Spalte) , werde ich in den richtigen Weg oder sollte ich suchen in benutzerdefinierten Funktionen?

  • Bitte zeigen Sie Ihre input-und output/erwartete dataframes. Verwenden show.
  • Hi @JacekLaskowski danke für den Kommentar, ich habe es bearbeitet die Frage, um es klarer, was ich erreichen möchte.
InformationsquelleAutor other15 | 2016-04-11
Schreibe einen Kommentar