altında bir veri çerçeve sütunu ve harici listeyi udf'ye aktarma Aşağıdaki yapıda bir kıvılcım veri çerçevem var. BodyText_token, tokenlere (işlenmiş/kelime kümesi) sahiptir. Ve ben her bir anahtar kelime listesi altında düşmek kaç belirteçleri kontrol etmek ve mevcut dataframe yeni sütun olarak sonuç eklemek için gerekli kelime tanımlı Solumn
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']]
iç içe geçmiş bir listesi var. Ör .:
tokens =["become", "farmer","rally","workers","student"]
sonucu -> [1,2,0]
Aşağıdaki işlev beklendiği gibi çalışmıştır.
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
İşleve erişmek için, işlev alanına erişmek için udf kullandım ve bir hata alıyorum. Bence harici bir listeyi bir udf'ye aktarmak. Dış listeyi ve datafram sütununu bir udf'ye aktarabilir ve veri çerçeveme yeni bir sütun ekleyebilir miyim?
topicWord = udf(label_maker_topic,StringType())
myDF=myDF.withColumn("topic_word_count",topicWord(myDF.bodyText_token,keyword_list))
(büküverilmiş bir kod herkes yardımcı olmak için) ama bu dikkatli olurdu 'şu anda udf tanımlanmış değer. Dolayısıyla, 'topic_words' değiştirilerek ve daha sonra udf ile yeniden kullanılması işe yaramaz - bu, udf'nin tanımlandığı zamanda hala' topic_words 'değerini kullanır. – CHP