Wie übergebe ich einen konstanten Wert an Python UDF?

Ich dachte, ob es möglich ist, ein @ zu erstellUDF das erhält zwei Argumente einColumn und eine andere Variable Object,Dictionary oder ein anderer Typ), führen Sie dann einige Operationen aus und geben Sie das Ergebnis zurück.

Eigentlich habe ich versucht, dies zu tun, aber ich habe eine Ausnahme bekommen. Daher habe ich mich gefragt, ob es eine Möglichkeit gibt, dieses Problem zu vermeiden.

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

Und ich erhalte den folgenden Fehler:

AnalysisException: u "kann 'Bonsanto' mit dem Namen, dem Alter und dem Saldo der Eingabespalten nicht auflösen;"

So ist es offensichtlich, dass dieUDF "sieht" dasstring "Bonsanto" als Spaltenname, und tatsächlich versuche ich, einen Datensatzwert mit dem zweiten Argument zu vergleichen.

Andererseits weiß ich, dass es möglich ist, einige Operatoren in einem @ zu verwendewhere -Klausel (aber eigentlich möchte ich wissen, ob es mit einem @ erreichbar iUDF), wie folgt

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

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage