Sto usando Scala e voglio creare la mia funzione DataFrame. Ad esempio, voglio trattare una colonna come una matrice, scorrere ogni elemento e fare un calcolo.Spark Build Custom Column Function, funzione definita dall'utente
Per iniziare, sto cercando di implementare il mio metodo getMax. Così colonna x avrebbe i valori [3,8,2,5,9], e l'uscita prevista del metodo sarebbe 9.
Ecco come appare a 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
}
Questo è quello che ho finora, e ottengo questo errore
"value length is not a member of org.apache.spark.sql.column",
e non so in quale altro modo per scorrere attraverso la colonna.
def getMax(col: Column): Column = {
var maxValue = col(0)
for (i <- 1 until col.length if col(i) > maxValue){
maxValue = col(i)
}
maxValue
}
Una volta che sono in grado di attuare il mio metodo, creerò una funzione di colonna
val value_max:org.apache.spark.sql.Column=getMax(df.col(“value”)).as(“value_max”)
E poi spero di essere in grado di utilizzare questo in un'istruzione SQL, per esempio
val sample = sqlContext.sql("SELECT value_max(x) FROM table")
e l'output previsto sarebbe 9, data colonna di input [3,8,2,5,9]
Sto seguendo una risposta da un altro thread Spark Scala - How do I iterate rows in dataframe, and add calculated values as new columns of the data frame dove creano un metodo privato per la deviazione standard. I calcoli che farò saranno più complessi di questo, (ad esempio confronterò ogni elemento nella colonna), sto andando nelle direzioni corrette o dovrei cercare più nelle funzioni definite dall'utente?
Si prega di mostrare il proprio ingresso e di uscita/dataframes attesi. Usa 'spettacolo'. –
Ciao @JacekLaskowski grazie per il commento, ho modificato la domanda per rendere più chiaro ciò che vorrei ottenere. – other15