Ich habe eine komplexe DataFrame-Struktur und möchte eine Spalte einfach auf Null setzen. Ich habe implizite Klassen erstellt, die Funktionalität verbinden und einfach 2D-Datenframe-Strukturen adressieren. Aber sobald der Datenrahmen mit ArrayType oder MapType komplizierter wird, hatte ich nicht viel Glück. Zum Beispiel:Wie ändert man einen Spark-Datenrahmen mit einer komplexen verschachtelten Struktur?
Ich habe Schema wie folgt definiert:
StructType(
StructField(name,StringType,true),
StructField(data,ArrayType(
StructType(
StructField(name,StringType,true),
StructField(values,
MapType(StringType,StringType,true),
true)
),
true
),
true)
)
ich einen neuen DF-Kunden erstellen möchten, die das Feld data.value
von MapType auf null gesetzt, aber da dies ein Element eines Arrays I Ich konnte nicht herausfinden, wie. Ich würde denken, es wäre ähnlich sein:
df.withColumn("data.values", functions.array(functions.lit(null)))
aber das schafft schließlich eine neue Spalte von data.values
und nicht modifizieren, um das values
Element des Datenfeldes.