5

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 ファイルで正しく動作するようにこのコードを改善するにはどうすればよいですか?

4

2 に答える 2

0

入力データは、たとえば N-Triples 形式のトリプルの gzip 圧縮ファイル(triplePart1.gz、triplePart2.gz ....) で構成される必要があるため、N-トリプルの圧縮ファイルを含む input_triples.tar.gz( triplePart1.gz、triplePart2.gz ....)。

  1. tar ファイルを解凍し、コンテンツを HDFS にコピーします。

    ---/hadoop$ tar zxvf /tmp/input_triples.tar.gz /tmp/input_triples .

    ---/hadoop$ bin/hadoop fs -copyFromLocal /tmp/input-files /input .

  2. 入力データを圧縮する

    ---/hadoop$ bin/hadoop jar webpie.jar jobs.FilesImportTriples /input /tmp /pool --maptasks 4 --reducetasks 2 --samplingPercentage 10 --samplingThreshold 1000

  3. 推論

    ---/hadoop$ bin/hadoop jar webpie.jar jobs.Reasoner /pool --fragment owl --rulesStrategy fixed --reducetasks 2 --samplingPercentage 10 --samplingThreshold 1000

ここに続きます:-)

于 2013-09-16T15:38:42.457 に答える