我正在使用MAPI工具(其Microsoft库和.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);
看看Behemoth (http://digitalpebble.blogspot.com/2011/05/processing-enron-dataset-using-behemoth.html)。 它结合了Tika和Hadoop。
我也写过自己的Hadoop + Tika工作。 模式为:
- 将所有 pst 文件包装成序列文件或 avro 文件。
- 编写仅映射作业,该作业从 avro 文件中读取 pst 文件并将其写入本地磁盘。
- 跨文件运行 tika。
- 将 tika 的输出写回序列文件
希望有帮助。
在映射器中处理PST文件。 经过长时间的分析和调试,发现API没有正确公开,这些API需要本地文件系统来存储提取的PST内容。它不能直接存储在HDFS上。这是瓶颈。所有这些API(提取和处理的库)都不是免费的。
我们可以做的是提取外部HDFS,然后我们可以在MR作业中处理