Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gibt einen DataFrame zurück, der eine neue Zeile für jedes Element in der angegebenen Matrix oder Zuordnung enthält. Der Standardspaltenname ist col für Elemente in einem Array und keyvalue für Elemente in einer Karte vorgesehen. Um unterschiedliche Spaltennamen zu verwenden, rufen Sie toDF() den zurückgegebenen DataFrame auf.
Syntax
spark.tvf.explode(collection)
Die Parameter
| Parameter | Typ | Description |
|---|---|---|
collection |
pyspark.sql.Column |
Zielspalte, an der gearbeitet werden soll. |
Rückkehr
pyspark.sql.DataFrame: Ein DataFrame mit einer neuen Zeile für jedes Element.
Examples
Beispiel 1: Explodieren einer Arrayspalte
import pyspark.sql.functions as sf
spark.tvf.explode(sf.array(sf.lit(1), sf.lit(2), sf.lit(3))).show()
+---+
|col|
+---+
| 1|
| 2|
| 3|
+---+
Beispiel 2: Explodieren einer Kartenspalte
import pyspark.sql.functions as sf
spark.tvf.explode(
sf.create_map(sf.lit("a"), sf.lit("b"), sf.lit("c"), sf.lit("d"))
).show()
+---+-----+
|key|value|
+---+-----+
| a| b|
| c| d|
+---+-----+
Beispiel 3: Explodieren eines Arrays von Strukturspalten
import pyspark.sql.functions as sf
spark.tvf.explode(sf.array(
sf.named_struct(sf.lit("a"), sf.lit(1), sf.lit("b"), sf.lit(2)),
sf.named_struct(sf.lit("a"), sf.lit(3), sf.lit("b"), sf.lit(4))
)).select("col.*").show()
+---+---+
| a| b|
+---+---+
| 1| 2|
| 3| 4|
+---+---+
Beispiel 4: Explodieren einer leeren Arrayspalte
import pyspark.sql.functions as sf
spark.tvf.explode(sf.array()).show()
+---+
|col|
+---+
+---+
Beispiel 5: Explodieren einer leeren Kartenspalte
import pyspark.sql.functions as sf
spark.tvf.explode(sf.create_map()).show()
+---+-----+
|key|value|
+---+-----+
+---+-----+
Beispiel 6: Überschreiben der Standardspaltennamen
Da spark.tvf.explode ein DataFrame zurückgegeben wird, verwenden toDF() Sie die Ausgabespalten umzubenennen.
.alias() hat keine Auswirkung auf die explodierten Säulen.
import pyspark.sql.functions as sf
# Array: rename the single output column
spark.tvf.explode(sf.array(sf.lit(1), sf.lit(2), sf.lit(3))).toDF("number").show()
+------+
|number|
+------+
| 1|
| 2|
| 3|
+------+
# Map: rename both output columns
spark.tvf.explode(
sf.create_map(sf.lit("a"), sf.lit("b"), sf.lit("c"), sf.lit("d"))
).toDF("letter", "pair").show()
+------+----+
|letter|pair|
+------+----+
| a| b|
| c| d|
+------+----+