5

我想在 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 文件作为输入?

4

2 回答 2

0

输入数据必须包含 N-Triples 格式的三元组的 gzip 压缩文件,例如(triplePart1.gz、triplePart2.gz ....),因此我们有: input_triples.tar.gz 包含 N-triples 的压缩文件( 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 回答
0
于 2013-06-30T13:39:41.287 回答