Hadoop プラットフォームでWeb スケールの Parallel Inference Engine (WebPIE) 推論を使用したいと考えています。2 つの Ubuntu 仮想マシンで Hadoop 構造を既に実装しており、うまく機能しています。WebPie を使用して RDF ファイルを推論したい場合、シーケンス ファイル形式が必要なためプロセスが失敗します。WebPIE チュートリアルでは、Hadoop で推論するための前提条件として、シーケンス ファイル形式については何も言及していません。Sequence ファイル形式を生成するために、次のコードを書きました。
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 ファイルで正しく動作するようにこのコードを改善するにはどうすればよいですか?