J'utilise Pyspark 2.4 et j'aimerais créer df_2 à partir de df_1 :

df_1 :

root
 |-- request: array (nullable = false)
 |    |-- address: struct (nullable = false)
 |    |    |-- street: string (nullable  = false)
 |    |    |-- postcode: string (nullable  = false)

df_2 :

root
 |-- request: array (nullable = false)
 |    |-- address: struct (nullable = false)
 |    |    |-- street: string (nullable  = false)

Je sais que UDF est un moyen, mais existe-t-il d'autres moyens, comme l'utilisation de map(), pour atteindre le même objectif ?

0
Softhinker.com 19 févr. 2020 à 15:01

1 réponse

Meilleure réponse

Utilisez la fonction transform :

df_2 = df_1.withColumn("request", expr("transform(request, x -> struct(x.street) as address)"))

Pour chaque élément du tableau request, nous sélectionnons uniquement le champ street et créons une nouvelle structure.

1
blackbishop 19 févr. 2020 à 12:16