У меня есть кадр данных с этой схемой:
root
|-- id: string (nullable = true)
|-- type_info: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- time: string (nullable = true)
| | |-- action: string (nullable = false)
| | |-- text: string (nullable = true)
| | |-- date: string (nullable = true)
|-- click_info: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- time: string (nullable = true)
| | |-- action: string (nullable = true)
| | |-- text: string (nullable = true)
| | |-- query: string (nullable = true)
| | |-- cat: string (nullable = true)
| | |-- date: string (nullable = true)
|-- load_info: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- time: string (nullable = true)
| | |-- action: string (nullable = true)
| | |-- query: string (nullable = true)
| | |-- cat: string (nullable = true)
| | |-- date: string (nullable = true)
Я хочу добавить новый столбец к этому набору данных, который должен быть отсортированным объединением этих трех данных.
Я сделалнаписать функцию, чтобы сделать это для трех заданных списков.Функция выглядит примерно так:
from copy import deepcopy
def form_chain(type, click, load):
action_list = deepcopy(l1 + l2 + l3)
sorted_actions = sorted(action_list, key=lambda x: x[0])
return sorted_actions
Проблема в том, что функция UDF, построенная из этой функции, не работает.Помимо проблемы с deepcopy , кажется, что объединение трех столбцов невозможно.
Я пытался использовать функцию concat из spark.sql.functions , но даже этот подход не работает из-за несоответствия типов данных .
Как можно объединить эти три столбца?