使用pyspark将Outlook电子邮件转换为json文件格式

使用pyspark将Outlook电子邮件转换为json文件格式,json,email,outlook,pyspark,email-attachments,Json,Email,Outlook,Pyspark,Email Attachments,我有大约1封lac outlook电子邮件,希望使用pyspark的分布式功能将其转换为json格式。outlook电子邮件首先以.msg格式保存,然后执行将其转换为json格式的python算法。由于电子邮件的数量非常大,有没有办法利用pyspark实现,利用spark的分布式计算优势将所有msg文件转换为json?使用pyspark确实可以做到这一点,但我无法保证性能 #首先,从整体上获取数据 rdd=sc.wholeTextFile(“/path/to/files.msg”) #rdd的每

我有大约1封lac outlook电子邮件,希望使用pyspark的分布式功能将其转换为json格式。outlook电子邮件首先以.msg格式保存,然后执行将其转换为json格式的python算法。由于电子邮件的数量非常大,有没有办法利用pyspark实现,利用spark的分布式计算优势将所有msg文件转换为json?

使用pyspark确实可以做到这一点,但我无法保证性能

#首先,从整体上获取数据
rdd=sc.wholeTextFile(“/path/to/files.msg”)
#rdd的每一行都是(key,value)对,其中key是路径,value是文件的内容
#然后需要将python函数应用于“值”
json_rdd=rdd.map(lamba x:msg_to_json(x[1]))
#json_rdd现在应该在每一行上都包含一个json,您只需要将它写下来
json_rdd.saveAsTextFile(“/path/to/save/files.json”)
在您这边,您只需要准备
msg_to_json
函数,该函数将msg文件的内容作为条目中的字符串,并返回一个json文件


编辑
对于你的lib,它将是:

import extract\u msg
rdd=sc.binaryFiles(“/path/to/files.msg”)
rdd=rdd.map(提取消息)

感谢您的回复。是否可以通过wholeTextFiles()函数调用加载“.msg”文件?如果不可以,请您建议其他方法?我已经实现了一个msg_to_json()函数,只是想找到一种方法将它与您提到的pyspark rdd集成。hmmm,这是我的答案…您是否有不明白的地方?只需使用第一行
rdd=sc.wholeTextFile(“/path/to/files.msg”)
我尝试运行命令:
sc.wholeTextFile(/path/to/files.msg”)
它给我的输出是这样的:
[(u'dbfs://file1.msg',u'\ufffd\ufffd\x11\u0871\x1a\ufffd\x00\x00\x00\x00\x00\x00\x00\)]
而不是电子邮件正文的文本内容。显然,您的文件是二进制文件,所以请尝试使用
sc.binaryFiles()
读取您的数据。它将为您提供文件的二进制输出,然后您可以对其进行操作。我可以获取二进制数据,但将其转换为文本格式对我来说有点困难。您对如何执行相同的操作有何想法?