Я пытаюсь найти способ написать пользовательскую функцию PySpark, которая может поддерживать любые типы входных данных и возвращать тип на основе типов входных данных. Например, скажем, я хотел создать простую функцию фиксации, которая просто фиксирует числовое значение между нижней и верхней границей. Это можно было бы написать так:
Код: Выделить всё
def clamp(value, low, high):
return max(low, min(value, high))
Эта функция должна поддерживать любой числовой тип. Но функция pyspark.sql.functions.udf позволяет указать только один тип возвращаемого значения, и если тип не соответствует, то udf вернет NULL. Я пытался поиграться с перегрузкой из модуля ввода, но мне не удалось заставить его работать. Я знаю, что это должно быть каким-то образом возможно, потому что такие функции, как pyspark.sql.functions.sum, работают для любого числового типа, но я не могу это воспроизвести. Любая помощь будет принята с благодарностью.
Подробнее здесь:
https://stackoverflow.com/questions/790 ... -on-inputs