Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Returnerar en DataFrame som innehåller en ny rad för varje element i den angivna matrisen eller kartan. Standardkolumnnamnet är col för element i en matris och keyvalue för element i en karta. Om du vill använda olika kolumnnamn anropar du toDF() den returnerade DataFrame.
Syntax
spark.tvf.explode(collection)
Parameterar
| Parameter | Typ | Description |
|---|---|---|
collection |
pyspark.sql.Column |
Målkolumn att arbeta med. |
Retur
pyspark.sql.DataFrame: En DataFrame med en ny rad för varje element.
Examples
Exempel 1: Explodera en matriskolumn
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|
+---+
Exempel 2: Explodera en kartkolumn
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|
+---+-----+
Exempel 3: Explodera en matris med structkolumn
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|
+---+---+
Exempel 4: Explodera en tom matriskolumn
import pyspark.sql.functions as sf
spark.tvf.explode(sf.array()).show()
+---+
|col|
+---+
+---+
Exempel 5: Explodera en tom kartkolumn
import pyspark.sql.functions as sf
spark.tvf.explode(sf.create_map()).show()
+---+-----+
|key|value|
+---+-----+
+---+-----+
Exempel 6: Åsidosätta standardkolumnnamnen
Eftersom spark.tvf.explode returnerar en DataFrame använder du toDF() för att byta namn på utdatakolumnerna.
.alias() har ingen effekt på de exploderade kolumnerna.
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|
+------+----+