Ich versuche, einige Felder in meinem Datenrahmen in JSON zu schreiben. Meine Datenstruktur im Datenrahmen istWie schreibe ich eine Reihe von Feldern in JSON?
Key|col1|col2|col3|col4
key|a |b |c |d
Key|a1 |b1 |c1 |d1
Jetzt ich nur die col1 zu col4 Felder zu JSON konvertieren Ich versuche und einen Namen in das Feld Json geben
erwartete Ausgabe
[Key,{cols:[{col1:a,col2:b,col3:c,col4:d},{col1:a1,col2:b1,col3:c1,col4:d1}]
Ich habe dafür ein udf geschrieben.
val summary = udf(
(col1:String, col2:String, col3:String, col4:String) => "{\"cols\":[" + " {\"col1\":" + col1 + ",\"col2\":" + col2 + ",\"col3\":" + col3 + ",\"col4\":" + col4 + "}]}"
)
val result = input.withColumn("Summary",summary('col1,'col2,'col3,'col4))
val result1 = result.select('Key,'Summary)
result1.show(10)
Das ist mein Ergebnis
[Key,{cols:[{col1:a,col2:b,col3:c,col4:d}]}]
[Key,{cols:[{col1:a1,col2:b1,col3:c1,col4:d1}]}]
Wie Sie sehen können, sind sie nicht gruppiert. Gibt es eine Möglichkeit, diese Zeilen mit der UDF selbst zu gruppieren? Ich bin neu bei scala/Spark und nicht in der Lage, das richtige udf herauszufinden.
Ich glaube nicht, dass Sie Ihre ‚erwartete Ausgabe‘ korrekt beendet haben; Ich würde erwarten, dass es am Ende ein anderes "}]" geben wird, das der Eröffnung "[{" entspricht. –