Я пытаюсь разработать процесс TF.IDF для pyspark с помощью MapReduce (платформа - Databricks).Поскольку я действительно новичок в pyspark, Databricks и во всем процессе MapReduce, у меня возникают некоторые проблемы с синтаксисом, которые мне не удается решить.
Вот код, который я пытаюсь запустить:
full_text = sc.wholeTextFiles("/FileStore/tables/full_text.txt", 5)
number_of_docs = full_text.count()
import re
def tokenize(s):
return re.split("\\W+", s.lower())
#Tokenize the text
tokenized_text = full_text.map(lambda text,title: (title, tokenize(text)))
#Count Words in each document
term_frequency = tokenized_text.flatMapValues(lambda x: x).countByValue()
term_frequency.items()[:20] # Display 20 lines
document_frequency = tokenized_text.flatMapValues(lambda x: x).distinct()\
.map(lambda title,word: (word,title)).countByKey()
document_frequency.items()[:10]
import numpy as np
def tf_idf(number_of_docs, term_frequency, document_frequency):
result = []
for key, value in tf.items():
doc = key[0]
term = key[1]
df = document_frequency[term]
if (df>0):
tf_idf = float(value)*np.log(number_of_docs/df)
result.append({"doc":doc, "score":tf_idf, "term":term})
return result
tf_idf_output = tf_idf(number_of_docs, term_frequency, document_frequency)
tf_idf_output[:10]
Проблемы в строках:
term_frequency = tokenized_text.flatMapValues(lambda x: x).countByValue()
document_frequency = tokenized_text.flatMapValues(lambda x: x).distinct()\
.map(lambda title,word: (word,title)).countByKey()
Ошибка: задание прервано из-за сбоя этапа: задание 0 на этапе 1.0 не выполнено 1 раз, последний сбой: потерянное задание 0.0на этапе 1.0 (TID 1, localhost, драйвер исполнителя)
Я очень ценю вашу помощь здесь, так как не знаю, как решить эту проблему: (
Заранее большое спасибо