3

我正在使用MAPI工具(它的 microsoft lib 和 .NET 中),然后使用apache TIKA库来处理并从 Exchange 服务器中提取pst,这是不可扩展的。

如何使用 MR 方式处理/提取 pst ... java 中是否有任何可用的工具、库可以在我的 MR 工作中使用。任何帮助都会很棒。

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);
4

2 回答 2

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 的输出写回序列文件

希望有帮助。

于 2012-05-07T18:46:18.963 回答
0

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

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

于 2012-06-14T11:19:45.930 回答