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 字段并创建一个新结构。