如何使用spark来解析出eml,获取邮件中主题,正文,附件,我在Google中都没有查到相关的例子,我现在已经读取文件,该如何在map中进行解析操作?

解决方案 »

  1.   

    你不应该用sc.textFile读取文件,否则rdd每条记录对应的是文件的一行,这样你没法关联每个邮件想解析的字段。应该是JavaPairRDD<String,String> emls = sc.wholeTextFile("/path/to/all/eml/dir/");
    其中key是文件名,value是文件内容
    然后emls.map(),对value进行解析。
    eml内容如何解析,自己根据eml的格式去处理。本身格式是不难的,网上应该有eml格式的解释。
    例如我随便找了我邮箱一封邮件做例子:其中中文内容,是base64编码,字符集gb18030。具体解析方法:byte[] decode = Base64.decode(rawText);
    String clearText = new String(decode,"gb18030");这个只是举例说明,其他自己慢慢摸索吧