Как передать постоянное значение в Python UDF?

Я думал, можно ли создатьUDF который получает два аргументаColumn и другая переменная (Object,Dictionaryили любой другой тип), затем выполните некоторые операции и верните результат.

На самом деле, я пытался сделать это, но у меня есть исключение. Поэтому мне было интересно, есть ли способ избежать этой проблемы.

df = sqlContext.createDataFrame([("Bonsanto", 20, 2000.00), 
                                 ("Hayek", 60, 3000.00), 
                                 ("Mises", 60, 1000.0)], 
                                ["name", "age", "balance"])

comparatorUDF = udf(lambda c, n: c == n, BooleanType())

df.where(comparatorUDF(col("name"), "Bonsanto")).show()

И я получаю следующую ошибку:

AnalysisException: вы "не можете разрешить 'Bonsanto', учитывая имя входного столбца, возраст, баланс;"

Так что очевидно, чтоUDF "видит"string «Bonsanto» как имя столбца, и на самом деле я пытаюсь сравнить значение записи со вторым аргументом.

С другой стороны, я знаю, что можно использовать некоторые операторы внутриwhere пункт (но на самом деле я хочу знать, достижимо ли это с помощьюUDF), следующее:

df.where(col("name") == "Bonsanto").show()

#+--------+---+-------+
#|    name|age|balance|
#+--------+---+-------+
#|Bonsanto| 20| 2000.0|
#+--------+---+-------+

Ответы на вопрос(1)

Ваш ответ на вопрос