2 votes

Colonnes Spark Dataframe Arraytype

J'aimerais créer une nouvelle colonne dans un dataframe, qui est le résultat de l'application d'une fonction à une colonne de type tableau.

Voici ce qu'il en est :

df = df.withColumn("max_$colname", max(col(colname)))

où chaque ligne de la colonne contient un tableau de valeurs ?

Les fonctions de spark.sql.function semblent fonctionner uniquement sur la base d'une colonne.

1voto

Manoj Kumar Dhakd Points 1213

Vous pouvez appliquer des fonctions définies par l'utilisateur à la colonne du tableau.

1. cadre de données

+------------------+
|               arr|
+------------------+
|   [1, 2, 3, 4, 5]|
|[4, 5, 6, 7, 8, 9]|
+------------------+

2.Création de l'UDF

import org.apache.spark.sql.functions._
def max(arr: TraversableOnce[Int])=arr.toList.max
val maxUDF=udf(max(_:Traversable[Int]))

3.Application de l'UDF dans une requête

df.withColumn("arrMax",maxUDF(df("arr"))).show

4.Résultat

+------------------+------+
|               arr|arrMax|
+------------------+------+
|   [1, 2, 3, 4, 5]|     5|
|[4, 5, 6, 7, 8, 9]|     9|
+------------------+------+

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X