Die übergabe eines Daten-frame-Spalte und eine externe Liste mit udf unter withColumn

Ich habe eine Spark-dataframe folgende Struktur. Die bodyText_token hat das Token (bearbeitet/eingestellt von Wörtern). Und ich habe eine verschachtelte Liste mit den definierten keywords

root
 |-- id: string (nullable = true)
 |-- body: string (nullable = true)
 |-- bodyText_token: array (nullable = true)

keyword_list=['union','workers','strike','pay','rally','free','immigration',],
['farmer','plants','fruits','workers'],['outside','field','party','clothes','fashions']]

Ich benötigt, um zu überprüfen, wie viele Münzen fallen unter den einzelnen keyword-Liste und fügen Sie das Ergebnis in einer neuen Spalte der bestehenden dataframe.
ZB: wenn tokens =["become", "farmer","rally","workers","student"]
das Ergebnis -> [1,2,0]

Folgende Funktion funktioniert wie erwartet.

def label_maker_topic(tokens,topic_words):
    twt_list = []
    for i in range(0, len(topic_words)):
        count = 0
        #print(topic_words[i])
        for tkn in tokens:
            if tkn in topic_words[i]:
                count += 1
        twt_list.append(count)

    return twt_list

Ich verwendete udf-unter withColumn, um die Funktion aufzurufen und ich bekomme eine Fehlermeldung. Ich denke, es ist zum übergeben einer externen Liste auf einer udf. Gibt es eine Möglichkeit, die ich übergeben können eine externe Liste, und die datafram Spalte zu einer udf-Datei und fügen Sie eine neue Spalte in meine dataframe?

topicWord = udf(label_maker_topic,StringType())
myDF=myDF.withColumn("topic_word_count",topicWord(myDF.bodyText_token,keyword_list))
InformationsquelleAutor Jay | 2016-05-24
Schreibe einen Kommentar