我想写多个输出文件。 我如何使用 Job 而不是 JobConf 来做到这一点?
最佳答案
创建基于键的输出文件名的简单方法
input data type
//key //value
cupertino apple
sunnyvale banana
cupertino pear
MultipleTextOutputFormat 类
static class KeyBasedMultipleTextOutputForma extends MultipleTextOutputFormat<Text, Text> {
@Override
protected String generateFileNameForKeyValue(Text key, Text value, String name) {
return key.toString() + "/" + name;
}
}
作业配置
job.setOutputFormat(KeyBasedMultipleTextOutputFormat.class);
运行这段代码,你会在HDFS中看到以下文件,其中/output是作业输出目录:
$ hadoop fs -ls /output
/output/cupertino/part-00000
/output/sunnyvale/part-00000
希望对您有所帮助。
关于hadoop - 如何通过新的 Hadoop API 使用 MultipleTextOutputFormat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6272307/