Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Возвращает DataFrame, содержащий новую строку для каждого элемента в переданном массиве или карте. Имя столбца по умолчанию предназначено col для элементов массива и keyvalue элементов в карте. Чтобы использовать разные имена столбцов, вызовите toDF() возвращаемый кадр данных.
Синтаксис
spark.tvf.explode(collection)
Параметры
| Параметр | Тип | Description |
|---|---|---|
collection |
pyspark.sql.Column |
Целевой столбец для работы. |
Возвраты
pyspark.sql.DataFrame: Кадр данных с новой строкой для каждого элемента.
Примеры
Пример 1. Взрыв столбца массива
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|
+---+
Пример 2. Взрыв столбца карты
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|
+---+-----+
Пример 3. Взрыв массива столбца структуры
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|
+---+---+
Пример 4. Взрыв пустого столбца массива
import pyspark.sql.functions as sf
spark.tvf.explode(sf.array()).show()
+---+
|col|
+---+
+---+
Пример 5. Взрыв пустого столбца карты
import pyspark.sql.functions as sf
spark.tvf.explode(sf.create_map()).show()
+---+-----+
|key|value|
+---+-----+
+---+-----+
Пример 6. Переопределение имен столбцов по умолчанию
Так как spark.tvf.explode возвращает кадр данных, используйте toDF() для переименования выходных столбцов.
.alias() не влияет на взрывные столбцы.
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|
+------+----+