Pyspark: создать массив struct из другого массива struct - PullRequest
0 голосов
/ 19 февраля 2020

Я использую Pyspark 2.4 и хотел бы создать df_2 из df_1:

[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 (), для достижения той же цели?

1 Ответ

1 голос
/ 19 февраля 2020

Использование функции transform:

df_2 = df_1.withColumn("request", expr("transform(request, x -> struct(x.street) as address)"))

Для каждого элемента массива request мы выбираем только поле street и создаем новую структуру.

...