TableValuedFunction.explode

Verilen dizideki veya eşlemedeki her öğe için yeni bir satır içeren bir DataFrame döndürür. Varsayılan sütun adı, col dizideki öğeler ve keyvalue bir eşlemedeki öğeler içindir. Farklı sütun adları kullanmak için döndürülen DataFrame'i çağırın toDF() .

Sözdizimi

spark.tvf.explode(collection)

Parametreler

Parametre Türü Description
collection pyspark.sql.Column Üzerinde çalışacak hedef sütun.

İade

pyspark.sql.DataFrame: Her öğe için yeni bir satır içeren bir DataFrame.

Örnekler

Örnek 1: Dizi sütununu hızlandırma

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|
+---+

Örnek 2: Harita sütununu büyütme

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|
+---+-----+

Örnek 3: Yapı sütunu dizisinin patlatılması

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|
+---+---+

Örnek 4: Boş bir dizi sütununu boşaltma

import pyspark.sql.functions as sf
spark.tvf.explode(sf.array()).show()
+---+
|col|
+---+
+---+

Örnek 5: Boş bir harita sütununu boşaltma

import pyspark.sql.functions as sf
spark.tvf.explode(sf.create_map()).show()
+---+-----+
|key|value|
+---+-----+
+---+-----+

Örnek 6: Varsayılan sütun adlarını geçersiz kılma

DataFrame spark.tvf.explode döndürdüğünden çıkış sütunlarını yeniden adlandırmak için kullanın toDF() . .alias() , patlayan sütunlar üzerinde hiçbir etkisi yoktur.

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|
+------+----+