Hadoop:键和值在输出文件中以制表符分隔.怎么做以分号分隔?

Bob*_*Bob 12 reduce hadoop mapreduce map

我认为标题已经解释了我的问题.我想改变

key (tab space) value
Run Code Online (Sandbox Code Playgroud)

key;value
Run Code Online (Sandbox Code Playgroud)

在所有输出文件中,reducer是从映射器的输出生成的.

我用谷歌找不到这方面的好文档.任何人都可以提供一些关于如何实现这一目标的代码?

Chr*_*ite 18

将配置属性设置mapred.textoutputformat.separator";"

  • 让我们清楚新旧API的含义.如果你在hadoop 2(YARN)之前使用任何东西,那么它就是`mapred.textoutputformat.separator`,无论你是使用`oahmapred.TextOutputFormat`还是`oahmapreduce.lib.output.TextOutputFormat`,否则使用2+ (YARN)它是`mapreduce.textoutputformat.separator`,与您正在使用的TextOutputFormat版本无关.对于基于Cloudera的版本,在v4之前它的`mapred.textoutputformat.separator`,v4 +它的`mapreduce.textoutputformat.separator` (12认同)

xgM*_*gMz 15

由于缺乏更好的文档,这是我收集的内容:

    setTextOutputFormatSeparator(final Job job, final String separator){
            final Configuration conf = job.getConfiguration(); //ensure accurate config ref

            conf.set("mapred.textoutputformat.separator", separator); //Prior to Hadoop 2 (YARN)
            conf.set("mapreduce.textoutputformat.separator", separator);  //Hadoop v2+ (YARN)
            conf.set("mapreduce.output.textoutputformat.separator", separator);
            conf.set("mapreduce.output.key.field.separator", separator);
            conf.set("mapred.textoutputformat.separatorText", separator); // ?
    }
Run Code Online (Sandbox Code Playgroud)