Как передать пользовательские структуры данных в качестве параметров в пользовательскую функцию PySpark (UDF)? - PullRequest
0 голосов
/ 23 апреля 2020

Попытка передать древовидную структуру данных и целочисленное значение в UDF в PySpark. Как это можно сделать? Я пытаюсь withColumn() применить UDF и передать дерево и целое число, используя lit(). Если я правильно понимаю, lit () может создать столбец литеральных чисел в DataFrame. Но я не совсем уверен, как горит может помочь с древовидной структурой данных. Видел некоторые обсуждения StackOverflow о перегрузке UDF. Это жизнеспособное решение для этого случая? Заранее спасибо!

def find_nearest_road(lon, lat, str_tree,  search_radius):
    #do processing
    return an_int

nearest_match_udf_int = udf(lambda row: find_nearest_road(lon, lat, str_tree, gps_err), IntegerType())
df = df.withColumn('newColName', nearest_match_udf_int("longitudeColumnInDF", 
                                                       "longitudeColumnInDF",
                                                        str_tree,
                                                        search_radius
                                                       )
                  )
...