Pyspark - функция UDF для нескольких столбцов списков - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть кадр данных с этой схемой:

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 , но даже этот подход не работает из-за несоответствия типов данных .

Как можно объединить эти три столбца?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...