如何使用hadoop Map reduce处理/提取.pst

时间:2012-05-02 13:55:00

标签: hadoop mapreduce mapi apache-tika pst

我正在使用 MAPI 工具(其microsoft lib和.NET)以及 apache TIKA 库来处理和提取 pst 交换服务器,不可扩展。

如何使用MR方式处理/提取pst ...是否有可用于我的MR作业的java中可用的工具库。任何帮助都会非常充实。

Jpst Lib内部使用:PstFile pstFile = new PstFile(java.io.File)

问题出在 Hadoop API 上,我们没有接近java.io.File的任何内容。

以下选项始终存在,但效率不高:

  File tempFile = File.createTempFile("myfile", ".tmp");
  fs.moveToLocalFile(new Path (<HDFS pst path>) , new Path(tempFile.getAbsolutePath()) );
  PstFile pstFile = new PstFile(tempFile);

2 个答案:

答案 0 :(得分:2)

看看Behemoth(http://digitalpebble.blogspot.com/2011/05/processing-enron-dataset-using-behemoth.html)。它结合了Tika和Hadoop。

我也写过自己的Hadoop + Tika工作。模式是:

  1. 将所有pst文件包装成序列或avro文件。
  2. 编写一个仅映射作业,从avro文件读取pst文件并将其写入本地磁盘。
  3. 在文件中运行tika。
  4. 将tika的输出写回序列文件
  5. 希望有帮助。

答案 1 :(得分:0)

无法在mapper中处理PST文件。经过长时间的分析和调试后发现API没有正确暴露,那些API需要localfile系统来存储提取的pst内容。它直接无法存储在HDFS上。那是瓶颈。所有这些API(提取和处理的库)都不是免费的。

我们可以做的是从hdfs外部提取,然后我们可以在MR作业中处理