reflect(class_name, method_name, *args)
Описание
Функция reflect()
вызывает статический метод Java класса по его имени.
Параметры
class_name
: String - полное имя Java классаmethod_name
: String - имя вызываемого метода*args
: Column - аргументы метода
Возвращаемое значение
Зависит от типа возвращаемого значения вызываемого метода
Пример использования
from pyspark.sql.functions import reflect
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("reflect_example").getOrCreate()
# Создаем DataFrame с данными
data = [(1,), (2,), (3,)]
df = spark.createDataFrame(data, ["number"])
# Вызываем статический метод Java класса
result = df.select(
"number",
reflect("java.lang.Math", "sqrt", "number").alias("sqrt")
).show()
# Результат:
# +------+------------------+
# |number|sqrt |
# +------+------------------+
# | 1|1.0 |
# | 2|1.4142135623730951|
# | 3|1.7320508075688772|
# +------+------------------+
Примечания
- Класс должен быть доступен в classpath
- Метод должен быть статическим
- Для вызова методов экземпляра используйте
java_method()
- NULL значения в аргументах передаются как NULL