Como passar um valor constante para o Python UDF?

Eu estava pensando se era possível criar umUDF que recebe dois argumentos porColumn e outra variável (Object,Dictionary, ou qualquer outro tipo), faça algumas operações e retorne o resultado.

Na verdade, tentei fazer isso, mas tive uma exceção. Portanto, eu queria saber se havia alguma maneira de evitar esse problema.

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()

E eu recebo o seguinte erro:

AnalysisException: u "não pode resolver o nome da coluna de entrada 'Bonsanto', idade, saldo;"

Portanto, é óbvio que oUDF "vê" ostring "Bonsanto" como um nome de coluna e, na verdade, estou tentando comparar um valor de registro com o segundo argumento.

Por outro lado, eu sei que é possível usar alguns operadores dentro de umwhere cláusula (mas na verdade eu quero saber se é possível usando umUDF), do seguinte modo:

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

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

questionAnswers(1)

yourAnswerToTheQuestion