Accès aux données complexes dans les DataFrames Spark SQL
Spark SQL prend en charge les types de données complexes tels que les tableaux et les cartes. Cependant, les interroger nécessite des approches spécifiques. Ce guide détaille comment interroger efficacement ces structures :
Tableaux :
Plusieurs méthodes existent pour accéder aux éléments du tableau :
getItem
méthode : Cette méthode API DataFrame accède directement aux éléments par index.
df.select($"an_array".getItem(1)).show
Syntaxe des crochets Hive : Cette syntaxe de type SQL offre une alternative.
SELECT an_array[1] FROM df
Fonctions définies par l'utilisateur (UDF) : Les UDF offrent une flexibilité pour des manipulations de tableaux plus complexes.
val get_ith = udf((xs: Seq[Int], i: Int) => Try(xs(i)).toOption) df.select(get_ith($"an_array", lit(1))).show
Fonctions intégrées : Spark propose des fonctions intégrées telles que transform
, filter
, aggregate
et la famille array_*
pour le traitement des tableaux.
Cartes :
L'accès aux valeurs de la carte implique des techniques similaires :
getField
méthode : Récupère les valeurs à l'aide de la clé.
df.select($"a_map".getField("foo")).show
Syntaxe des crochets Hive : Fournit une approche de type SQL.
SELECT a_map['foo'] FROM df
Syntaxe des points : Une manière concise d'accéder aux champs de la carte.
df.select($"a_map.foo").show
UDF : Pour des opérations cartographiques personnalisées.
val get_field = udf((kvs: Map[String, String], k: String) => kvs.get(k)) df.select(get_field($"a_map", lit("foo"))).show
*`map_functions:** Functions like
map_keysand
map_values` sont disponibles pour la manipulation de la carte.
Structures :
L'accès aux champs de structure est simple :
Syntaxe des points : La méthode la plus directe.
df.select($"a_struct.x").show
SQL brut : Une alternative utilisant la syntaxe SQL.
SELECT a_struct.x FROM df
Tableaux de structures :
Interroger des structures imbriquées nécessite de combiner les techniques ci-dessus :
Syntaxe des points imbriqués : Accédez aux champs dans les structures au sein des tableaux.
df.select($"an_array_of_structs.foo").show
Méthodes combinées : Utilisation de getItem
pour accéder aux éléments du tableau, puis de la syntaxe par points pour les champs de structure.
df.select($"an_array_of_structs.vals".getItem(1).getItem(1)).show
Types définis par l'utilisateur (UDT) :
Les UDT sont généralement accessibles à l'aide des UDF.
Considérations importantes :
HiveContext
, selon votre version de Spark.*
) peut être utilisé avec la syntaxe par points pour sélectionner plusieurs champs.Ce guide fournit un aperçu complet de l'interrogation de types de données complexes dans Spark SQL DataFrames. N'oubliez pas de choisir la méthode la mieux adaptée à vos besoins spécifiques et à votre structure de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!