Pyspark:从另一个结构数组创建一个结构数组
Pyspark: Create an array of struct from another array of struct
我正在使用 Pyspark 2.4 并想从 df_1
:
创建 df_2
df_1:
root
|-- request: array (nullable = false)
| |-- address: struct (nullable = false)
| | |-- street: string (nullable = false)
| | |-- postcode: string (nullable = false)
df_2:
root
|-- request: array (nullable = false)
| |-- address: struct (nullable = false)
| | |-- street: string (nullable = false)
我知道 UDF 是一种方法,但是有没有其他方法,比如使用 map()
来达到同样的目的?
使用transform
函数:
df_2 = df_1.withColumn("request", expr("transform(request, x -> struct(x.street) as address)"))
对于 request
数组的每个元素,我们 select 只有 street
字段并创建一个新结构。
我正在使用 Pyspark 2.4 并想从 df_1
:
df_2
df_1:
root
|-- request: array (nullable = false)
| |-- address: struct (nullable = false)
| | |-- street: string (nullable = false)
| | |-- postcode: string (nullable = false)
df_2:
root
|-- request: array (nullable = false)
| |-- address: struct (nullable = false)
| | |-- street: string (nullable = false)
我知道 UDF 是一种方法,但是有没有其他方法,比如使用 map()
来达到同样的目的?
使用transform
函数:
df_2 = df_1.withColumn("request", expr("transform(request, x -> struct(x.street) as address)"))
对于 request
数组的每个元素,我们 select 只有 street
字段并创建一个新结构。