TypeError: 'Spalte' Objekt ist nicht aufrufbar mit WithColumn
Möchte ich anfügen einer neuen Spalte dataframe "df" aus der Funktion get_distance
:
def get_distance(x, y):
dfDistPerc = hiveContext.sql("select column3 as column3, \
from tab \
where column1 = '" + x + "' \
and column2 = " + y + " \
limit 1")
result = dfDistPerc.select("column3").take(1)
return result
df = df.withColumn(
"distance",
lit(get_distance(df["column1"], df["column2"]))
)
Aber, ich bekomme diese:
TypeError: 'Column' object is not callable
Ich denke, es passiert, weil x und y sind Column
Objekte und ich muss konvertiert werden, um String
für meine Abfrage. Bin ich im Recht? Wenn ja, wie kann ich dies tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht verwenden, Python-Funktion, die auf einem
Column
Objekte direkt, es sei denn, es ist beabsichtigt für den Betrieb aufColumn
Objekte /Ausdrücke. Sie müssenudf
für die:Aber Sie können nicht verwenden
SQLContext
im udf (oder mapper im Allgemeinen).Nur
join
:Funken wissen sollten die Funktion, die Sie verwenden, ist keine normale Funktion, sondern die UDF.
So, es gibt 2 Methoden, die wir verwenden können, die UDF auf dataframes.
Methode-1: Mit @udf-Anmerkung
Methode-2: Regestering udf mit pyspark.sql.Funktionen.udf