Ich habe einen Spark-Datenrahmen mit folgender Struktur. Das bodyText_token hat die Tokens (verarbeitete Wörter). Und ich habe eine verschachtelte Liste von definierten Schlüsselwörtern
%Vor% Ich musste überprüfen, wie viele Tokens unter die einzelnen Keyword-Listen fallen, und das Ergebnis als neue Spalte des vorhandenen Datenrahmens hinzufügen.
ZB: wenn tokens =["become", "farmer","rally","workers","student"]
das Ergebnis wird - & gt; [1,2,0]
Die folgende Funktion funktionierte wie erwartet.
%Vor%Ich habe udf unter withColumn benutzt, um auf die Funktion zuzugreifen und erhalte einen Fehler. Ich denke, es geht darum, eine externe Liste an ein udf zu übergeben. Gibt es eine Möglichkeit, die externe Liste und die datafram-Spalte an ein udf weiterzuleiten und meinem Dataframe eine neue Spalte hinzuzufügen?
%Vor%Die sauberste Lösung besteht darin, zusätzliche Argumente mit closement zu übergeben:
%Vor% Dies erfordert keine Änderungen in keyword_list
oder der Funktion, die Sie mit UDF umbrechen. Sie können diese Methode auch verwenden, um ein beliebiges Objekt zu übergeben. Dies kann verwendet werden, um beispielsweise eine Liste von sets
für effiziente Suchvorgänge zu übergeben.
Wenn Sie Ihre aktuelle UDF verwenden und topic_words
direkt übergeben möchten, müssen Sie sie zuerst in ein Spaltenliteral konvertieren:
Je nach Ihren Daten und Anforderungen gibt es alternative, effizientere Lösungen, die keine UDFs (explode + aggregate + collapse) oder Lookups (Hashing + Vektoroperationen) erfordern.
Tags und Links python apache-spark pyspark apache-spark-sql udf