Spark SQL prend en charge l'interrogation de types complexes stockés dans des trames de données, tels que des cartes et des tableaux. Ce guide décrit la syntaxe et les méthodes d'accès et de manipulation des structures de données imbriquées.
<code>df.select($"arrayColumn".getItem(index)).show</code>
Où, index représente la position de l'élément requis dans le tableau.
<code>sqlContext.sql("SELECT arrayColumn[index] FROM df").show</code>
<code>val get_ith = udf((xs: Seq[Int], i: Int) => Try(xs(i)).toOption) df.select(get_ith($"arrayColumn", lit(index))).show</code>
Spark 2.4 introduit des fonctions intégrées telles que les fonctions de filtre, de transformation, d'agrégation et array_* qui peuvent être utilisées pour opérer sur des tableaux :
<code>df.selectExpr("filter(arrayColumn, x -> x % 2 == 0) arrayColumn_even").show</code>
<code>df.selectExpr("transform(arrayColumn, x -> x + 1) arrayColumn_inc").show</code>
<code>df.selectExpr("aggregate(arrayColumn, 0, (acc, x) -> acc + x, acc -> acc) arrayColumn_sum").show</code>
<code>df.select($"mapColumn".getField("key")).show</code>
Où key représente le nom de la clé requise dans la carte.
<code>sqlContext.sql("SELECT mapColumn['key'] FROM df").show</code>
<code>df.select($"mapColumn.key").show</code>
<code>val get_field = udf((kvs: Map[String, String], k: String) => kvs.get(k)) df.select(get_field($"mapColumn", lit("key"))).show</code>
<code>df.select($"structColumn.field").show</code>
Parmi eux, field représente le nom du champ obligatoire dans la structure.
Les champs des tableaux à structure imbriquée sont accessibles en utilisant une combinaison de syntaxe de points, de noms de champs et de la méthode Column :
<code>df.select($"nestedArrayColumn.foo").show</code>
<code>df.select($"nestedArrayColumn.vals".getItem(index).getItem(innerIndex)).show</code>
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!