MapReduce output as ArrayList



如何在普通java项目中调用map reduce方法,是否可以将reducer输出作为Arraylist/Hashmap而不是平面文件返回,以及如何从jboss-appServer访问mapreduce。

下面是一个使用MultipleOutput 的示例程序

    public void reduce(Text key, Iterator<IntWritable> values,
            OutputCollector<Text, IntWritable> output, Reporter reporter)
            throws IOException {
        int total = 0;
          for (; values.hasNext();) {
            total += values.next().get();
            mos.getCollector("text", reporter).collect(key,
                    new IntWritable(total));
            mos.getCollector("seq", reporter).collect(key,
                    new IntWritable(total));
        }
    }

您需要在configure方法中创建一个MultipleOutputs实例。

    private MultipleOutputs mos;
    @Override
    public void configure(JobConf job) {
        mos = new MultipleOutputs(job);
    }

在驱动程序类中,您需要告知要使用的所有输入格式。下面将生成文本和序列文件格式的输出。

// Defines additional single text based output 'text' for the job
    MultipleOutputs.addNamedOutput(conf, "text", TextOutputFormat.class,
            Text.class, IntWritable.class);
    // Defines additional sequence-file based output 'sequence' for the job
    MultipleOutputs.addNamedOutput(conf, "seq",
            SequenceFileOutputFormat.class, Text.class, IntWritable.class);

但根据我从你的问题中了解到的,你基本上想从你的代码中访问你的mapreduce输出。您可以使用HDFS API下载输出文件。但最好是将数据放在配置单元表中,并使用JDBC进行访问。

相关内容

  • 没有找到相关文章

最新更新