2011-12-27 64 views
4

可能重复:
MultipleOutputFormat in hadoop写在多个文件输出在Hadoop中

我想了根据使用Hadoop的地图,减少月写的文件。如果数据是从一月份开始,那么数据应该在jan-file中写入,同样每个月应该有一个单独的文件。

如何建立在Hadoop中mapredude这样的文件。我正在尝试递归map-reduce,但没有得到如何实现它?

PLS建议我一些解决方案。

谢谢。

回答

5

使用MultipleOutputFormat类,输出文件名可以从钥匙,并从减速机减速机的输出值来推断。必须在用户定义的OutputFormat类中实现MultipleOutputFormat#generateFileNameForKeyValue

static class MyMultipleOutputFormat extends MultipleOutputFormat<Text, Text> { 
    protected String generateFileNameForKeyValue(Text key, Text value, String name) { 
     String keyString = key.toString(); 
     String valueString = value.toString(); 
     #return a combination of keyString and valueString 
    } 
} 
+0

不适用于最新版本的Hadoop(新的mapreduce库而不是旧的mapred)。这就是为什么我低估了。 – Tony 2013-12-16 03:09:13

相关问题