如何使用新的Hadoop API使用MultipleTextOutputFormat? [英] How do I use the MultipleTextOutputFormat using the new Hadoop API?

查看:138
本文介绍了如何使用新的Hadoop API使用MultipleTextOutputFormat?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想编写多个输出文件。
我如何使用Job而不是JobConf来做到这一点?

解决方案

一种简单的方法来创建基于键的输出文件名



<$输入数据类型

//键//值$ b $ cupertino苹果
sunnyvale香蕉
cupertino梨
/ code>

MultipleTextOutputFormat类

 静态类KeyBasedMultipleTextOutputForma扩展了MultipleTextOutputFormat< Text,Text> {
@Override
protected String generateFileNameForKeyValue(Text key,Text value,String name){
return key.toString()+/+ name;


code $

$ b $ p

  job.setOutputFormat(KeyBasedMultipleTextOutputFormat.class); 

运行此代码,您将在HDFS中看到以下文件,其中/ output是作业输出目录:

  $ hadoop fs -ls / output 
/ output / cupertino / part-00000
/输出/ sunnyvale / part-00000

希望它有帮助。


I would like to write multiple output files. How do I do this using Job instead of JobConf?

解决方案

an easy way to to create key based output file names

 input data type

  //key        //value
 cupertino   apple
 sunnyvale   banana
 cupertino   pear

MultipleTextOutputFormat class

static class KeyBasedMultipleTextOutputForma extends MultipleTextOutputFormat<Text, Text> {
    @Override
    protected String generateFileNameForKeyValue(Text key, Text value, String name) {
        return key.toString() + "/" + name;
    }
} 

job config

 job.setOutputFormat(KeyBasedMultipleTextOutputFormat.class);

Run this code and you’ll see the following files in HDFS, where /output is the job output directory:

 $ hadoop fs -ls /output
 /output/cupertino/part-00000
 /output/sunnyvale/part-00000

hopes it helps.

这篇关于如何使用新的Hadoop API使用MultipleTextOutputFormat?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆