【发布时间】:2013-01-21 15:16:44
【问题描述】:
我想在 Hadoop 平台上使用 Web-scale Parallel Inference Engine (WebPIE) 推理器。我已经用两个 Ubuntu 虚拟机实现了 Hadoop 结构,并且运行良好。当我想使用 WebPie 对 RDF 文件进行推理时,由于需要序列文件格式,该过程失败。 WebPIE tutorial 没有提到将序列文件格式作为 Hadoop 推理的先决条件。 为了生成序列文件格式,我编写了以下代码:
public static void main(String[] args) {
FileInputStream fis = null;
SequenceFile.Writer swriter = null;
try {
Configuration conf = new Configuration();
File outputDirectory = new File("output");
File inputDirectory = new File("input");
File[] files = inputDirectory.listFiles();
for (File inputFile : files) {
//Input
fis = new FileInputStream(inputFile);
byte[] content = new byte[(int) inputFile.length()];
fis.read(content);
Text key = new Text(inputFile.getName());
BytesWritable value = new BytesWritable(content);
//Output
Path outputPath = new Path(outputDirectory.getAbsolutePath()+"/"+inputFile.getName());
FileSystem hdfs = outputPath.getFileSystem(conf);
FSDataOutputStream dos = hdfs.create(outputPath);
swriter = SequenceFile.createWriter(conf, dos, Text.class,
BytesWritable.class, SequenceFile.CompressionType.BLOCK, new DefaultCodec());
swriter.append(key, value);
}
fis.close();
swriter.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
此代码使用某些 RDF 文件生成正确的序列文件格式,但不能 100% 正确工作,并且有时会生成损坏的文件。有没有从一开始就避免此代码的解决方案,如果没有,我如何改进此代码以将任何 RDF 文件作为输入正常工作?
【问题讨论】:
-
你能告诉更多关于你遇到的错误吗?正如你所说,WebPIE 教程没有提到序列文件。你能按照教程中的描述做所有事情吗?您是否在本教程中遇到任何问题。 Hadoop wiki 确实谈到了 sequence files,并且可能是一个有用的资源。