Ich habe einen Datenrahmen df
mit einer VectorUDT
Spalte namens features
. Wie bekomme ich ein Element der Spalte, sagen wir erstes Element?Zugriff auf Element einer VectorUDT-Spalte in einem Spark DataFrame?
Ich habe versucht, Sie folgendermaßen vorgehen
from pyspark.sql.functions import udf
first_elem_udf = udf(lambda row: row.values[0])
df.select(first_elem_udf(df.features)).show()
aber ich bekomme einen net.razorvine.pickle.PickleException: expected zero arguments for construction of ClassDict(for numpy.dtype)
Fehler. Derselbe Fehler, wenn ich stattdessen first_elem_udf = first_elem_udf(lambda row: row.toArray()[0])
mache.
Ich versuchte auch explode()
, aber ich bekomme einen Fehler, weil es ein Array oder einen Kartentyp erfordert.
Dies sollte eine gemeinsame Operation sein, denke ich.
Dies funktionierte nicht für mich. – user2205916
@ user2205916 Hier gibt es ein reproduzierbares Beispiel. Interessiert zu erklären, was __didnot Arbeit __? :) – zero323
Das hat bei mir nicht funktioniert, bis ich 'lit (1)' in 'lit (0)' geändert habe ... was ich aus deinem reproduzierbaren Beispiel ableiten konnte. So danke! –