Spark SQL unterstützt die Abfrage komplexer Typen, die in Datenrahmen wie Karten und Arrays gespeichert sind. In diesem Handbuch werden die Syntax und Methoden für den Zugriff auf und die Bearbeitung verschachtelter Datenstrukturen beschrieben.
<code>df.select($"arrayColumn".getItem(index)).show</code>
Wobei Index die Position des erforderlichen Elements im Array darstellt.
<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 führt integrierte Funktionen wie Filter, Transformation, Aggregation und Array_*-Funktionen ein, die zum Bearbeiten von Arrays verwendet werden können:
<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>
Wobei Schlüssel den Namen des erforderlichen Schlüssels in der Karte darstellt.
<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>
Unter anderem stellt Feld den Namen des erforderlichen Felds in der Struktur dar.
Auf Felder in verschachtelten Strukturarrays kann mit einer Kombination aus Punktsyntax, Feldnamen und der Column-Methode zugegriffen werden:
<code>df.select($"nestedArrayColumn.foo").show</code>
<code>df.select($"nestedArrayColumn.vals".getItem(index).getItem(innerIndex)).show</code>
Das obige ist der detaillierte Inhalt vonWie frage ich Spark SQL-DataFrames mit verschachtelten Datenstrukturen (Maps, Arrays, Structs) ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!