pyspark explode函数的使用
时间: 2023-12-30 17:02:38 浏览: 221
pyspark中的explode函数用于将包含数组或者Map类型的字段拆分成多行。它会将数组或Map中的每个元素拆分成一行,并复制其他列的值。
使用explode函数的基本语法如下:
```python
from pyspark.sql.functions import explode
df.withColumn('new_column', explode('array_column'))
```
其中,`df`是你的DataFrame对象,`array_column`是包含数组或Map的列名,`new_column`是你希望生成的新列的名称。
示例:
假设有一个DataFrame `df`,包含两列:`id`和`colors`。`colors`列是一个包含多个颜色的数组。你可以使用explode函数将每个颜色拆分成单独的行,如下所示:
```python
from pyspark.sql import SparkSession
from pyspark.sql.functions import explode
# 创建SparkSession
spark = SparkSession.builder.getOrCreate()
# 创建示例数据
data = [(1, ["red", "green", "blue"]), (2, ["yellow", "orange"])]
# 创建DataFrame
df = spark.createDataFrame(data, ["id", "colors"])
# 使用explode函数拆分数组
df_exploded = df.withColumn("color", explode("colors"))
df_exploded.show()
```
输出结果如下:
```
+---+------------------+-----+
| id| colors|color|
+---+------------------+-----+
| 1|[red, green, blue]| red|
| 1|[red, green, blue]|green|
| 1|[red, green, blue]| blue|
| 2| [yellow, orange]|yellow|
| 2| [yellow, orange]|orange|
+---+------------------+-----+
```
可以看到,`colors`列中的每个颜色都被拆分成了单独的行,并生成了新的`color`列。
阅读全文