hadoop - 如何通过新的 Hadoop API 使用 MultipleTextOutputFormat?

标签 hadoop mapreduce

我想写多个输出文件。 我如何使用 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/

相关文章:

hadoop - 分区程序无法正常工作

hadoop - 如何比较 PIG 中的两个元组?

python - 如何使用 MongoDB 高效地将数据从一个集合聚合到另一个集合中?

java - HIPI编译失败:找不到com.sun.image.codec.jpeg.JPEGDecodeParam的类文件

scala - Spark - CSV - Nullable false 不抛出异常

hadoop - 我正在Mapreduce中执行wordcount并在-copyToLocal中得到以下错误

mysql - 如何将存储过程导入HDFS

hadoop - 来自 CSV 文件的序列和向量

hadoop - 如何从 hib 获取文件名

hadoop - PigLatin 无法从 hdfs 读取文件