Ich habe ein Schema wie unten, die eine Ausgabe von collect_list
eines groupby
Funke kann keine Funktion Form nennen .Withcolumn
root
|
|-- usedServiceUnits: array (nullable = true)
| |-- element: string (containsNull = true)
|-- accumulators: array (nullable = true)
| |-- element: string (containsNull = true)
Werte in dies sieht aus wie unten
+----------------+
|usedServiceUnits|
+----------------+
|[180, 180, 1] |==> this is an array of String
|[180, 180, 1] |
+----------------+
I muss über dieses Feld einen def
anrufen wie
abc.select("serviceId", "recordId", "usedServiceUnits")
.withColumn("usedServiceUnits1",lit(sumAllValuesinString($"usedServiceUnits"))
def sumAllValuesinString(inString: String): String= {
var sum = 0
val DELIM =','
val a = splitString(inString,DELIM)
for (x <- a){
sum += Integer.parseInt(x)
}
sum.toString()
}
Wie kann ich diese Funktion aufrufen und Summe als Rückgabe erhalten und auf meine neue Spalte - usedServiceUnits1 gesetzt. Ich benötige eine ähnliche Art von Berechnung für einige Felder, in denen die Funktionen unterschiedlich sind. Also im Grunde bin ich auf der Suche nach, wie ich dies an meine Funktionen weitergeben kann oder wo ich mich ändern soll?
Vielen Dank im Voraus für die Vorschläge.
Danke Ramesh, das funktioniert für mich. –