我想在 Hadoop 平台上使用Web 级并行推理引擎 (WebPIE)推理器。我已经用两个 Ubuntu 虚拟机实现了 Hadoop 结构,并且运行良好。当我想使用 WebPie 对 RDF 文件进行推理时,由于需要序列文件格式,该过程失败。WebPIE教程没有提到将序列文件格式作为 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 文件作为输入?