Давайте предположим, что я создал функцию в python, поэтому поднял число до степени 2:
def squared(s):
return s * s
И затем я зарегистрировал функцию в Spark session
, как показано ниже:
spark.udf.register("squaredWithPython", squared)
затем, когда я вызываю UDF в Spark SQL как:
spark.range(1, 20).registerTempTable("test")
%sql select id, squaredWithPython(id) as id_squared from test
Тогда будет ли функция squaredWithPython
выполняться на рабочих узлах кластера, если данные распределены в рабочей памяти? Если да, то для чего используется векторизация UDF
? И в чем разница между UDF
и vectorized UDF
?
Аналогично для использования UDF
с кадрами данных.
Обратите внимание, что код извлекается из: https://docs.databricks.com/spark/latest/spark-sql/udf-python.html
Любая помощь очень ценится! *