Я пытаюсь проанализировать Enron DataSet на apache spark. Я хочу извлечь электронную почту от и до. Сначала создал и rdd, используя следующую функцию:
def utf8_decode_and_filter(rdd):
def utf_decode(s):
try:
return str(s, 'utf-8')
except:
pass
return rdd.map(lambda x: utf_decode(x[1])).filter(lambda x: x != None)
Вызывается вышеупомянутая функция с последовательностью искры
data = utf8_decode_and_filter(sc.sequenceFile('/user/ufac001/project1920/samples'))
Когда я делаю:
data.collect()
Я вижу данные как список строк с электронной почтой между сотрудниками. Я предполагаю, что это список строк
Теперь, чтобы извлечь тройки электронной почты. Я написал следующую функцию:
def xml_to_emails(s):
print(s)
emailed = []
return s
rdd = data.flatMap(lambda x: xml_to_emails(x)).map(lambda word: (word, 1)).reduceByKey(lambda a,b:a+b)
Моя проблема: во-первых, я не могу извлечь электронную почту, потому что в функции xml_to_email print (s) ничего не выводит, когда я запускаю collect на rdd, я могу напечатать кортеж с буквой и номером.
Как мне извлечь письма с этого rdd?
Пожалуйста, будь мил, я новичок ie на свече