Spark函数explode(e: Column)用于爆炸或创建数组或将列映射到行。将数组传递给此函数时,它将创建一个新的默认列“ col1”,其中包含所有数组元素。传递地图时,它将创建两个新列,一个列用于键,一个列用于值,并且映射中的每个元素均拆分为该行。
这将忽略具有null或为空的元素。从上面的示例可以看出,Washington和Jefferson在数组和映射中具有空值或空值,因此以下摘录不包含这些行。
爆炸-数组列示例
df.select($"name",explode($"knownLanguages"))
.show(false)
输出:
+-------+------+
|name |col |
+-------+------+
|James |Java |
|James |Scala |
|Michael|Spark |
|Michael|Java |
|Michael|null |
|Robert |CSharp|
|Robert | |
+-------+------+
爆炸–地图列示例
df.select($"name",explode($"properties"))
.show(false)
输出:
+-------+----+-----+
|name |key |value|
+-------+----+-----+
|James |hair|black|
|James |eye |brown|
|Michael|hair|brown|
|Michael|eye |null |
|Robert |hair|red |
|Robert |eye | |
+-------+----+-----+
explode_outer –为数组或映射中的每个元素创建行。
Spark SQL explode_outer(e: Column) 函数用于为数组或映射列中的每个元素创建一行。与explode不同,如果数组或映射为null或为空,则explode_outer返回null。
explode_outer –数组示例
df.select($"name",explode_outer($"knownLanguages"))
.show(false)<