【发布时间】:2020-04-28 08:44:43
【问题描述】:
我正在尝试分析 apache spark 上的 Enron DataSet。我想从中提取电子邮件。 首先使用以下函数创建和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 函数中,当我在 rdd 上运行 collect 时,print(s) 不输出任何内容,我可以打印一个带有字母和数字的元组。
如何从这个 rdd 中提取电子邮件?
请客气,我是 spark 的新手
【问题讨论】:
标签: python apache-spark pyspark rdd