Mam ramkę danych df
z kolumną VectorUDT
o nazwie features
. Jak uzyskać element kolumny, powiedzmy pierwszy element?Jak uzyskać dostęp do elementu kolumny VectorUDT w Spark DataFrame?
Próbowałem robić następujące
from pyspark.sql.functions import udf
first_elem_udf = udf(lambda row: row.values[0])
df.select(first_elem_udf(df.features)).show()
ale pojawia się błąd net.razorvine.pickle.PickleException: expected zero arguments for construction of ClassDict(for numpy.dtype)
. Ten sam błąd, jeśli zamiast tego wykonam first_elem_udf = first_elem_udf(lambda row: row.toArray()[0])
.
Próbowałem również explode()
, ale pojawia się błąd, ponieważ wymaga tablicy lub typu mapy.
To powinna być pospolita operacja, jak sądzę.
To nie działa dla mnie. – user2205916
@ user2205916 Istnieje tutaj powtarzalny przykład. Chcesz wyjaśnić, co __didn't work__? :) – zero323
To nie działało dla mnie, dopóki nie zmieniłem 'lit (1)' na 'lit (0)' ... co mogłem wywnioskować z twojego odtwarzalnego przykładu. Więc dziękuję! –