【问题标题】:How to process/extract .pst using hadoop Map reduce如何使用 hadoop Map reduce 处理/提取 .pst
【发布时间】:2012-05-12 00:19:54
【问题描述】:

我正在使用 MAPI 工具(它的 microsoft lib 和 .NET),然后使用 apache TIKA 库来处理和提取 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);

【问题讨论】:

  • 要以 Map/Reduce 方式执行此操作,您需要能够将 PST 文件拆分为小块,以便各个节点可以处理它们的部分。我不确定 PST 文件格式是否支持?

标签: hadoop mapreduce mapi apache-tika pst


【解决方案1】:

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

我还编写了自己的 Hadoop + Tika 作业。模式是:

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

希望有所帮助。s

【讨论】:

  • 单个映射器如何将输入格式识别为 pst 文件?然后它将如何提取这些?
  • @Yogesh 当您将文件放入 seuqnce 文件时,将其包装一些数据结构,我实际上使用 Avro 并简单地添加一个带有 mime-type 的头字段(我从 Tika 获得)作为包装过程。由于 Hadoop 中的小文件问题,第一步不是 MR 工作。强烈建议您查看并查看 Behemoth 代码,这是一个很好的示例。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    相关资源
    最近更新 更多