【问题标题】:Hadoop: key and value are tab separated in the output file. how to do it semicolon-separated?Hadoop:键和值在输出文件中以制表符分隔。如何做到分号分隔?
【发布时间】:2012-06-17 09:48:31
【问题描述】:

我认为标题已经在解释我的问题。我想改变

key (tab space) value

进入

key;value

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

我无法使用 google 找到关于此的良好文档。谁能提供一小部分代码来说明如何实现这一点?

【问题讨论】:

  • 您使用的是 hadoop 的哪个版本(0.20.2、0.20.20x、1.0.x、2.0.0?)和发行版(Apache、Cloudera?)
  • 您使用什么作为输出格式类:o.a.h.mapred.TextOutputFormat,或o.a.h.mapreduce.lib.output.TextOutputFormat

标签: map hadoop mapreduce reduce


【解决方案1】:

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

    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); // ?
    }

【讨论】:

    【解决方案2】:

    您可以使用“KeyValueLineRecordReader”的“KEY_VALUE_SEPERATOR”属性来指定您选择的分隔符。

    【讨论】:

    • 该属性可以在读回数据时设置,但不用于输出
    【解决方案3】:

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

    【讨论】:

    • 如果你使用新的API,它应该是mapreduce.output.textoutputformat.separator
    • 1.0.0 仍然在其源代码中显示 mapred.textoutputformat.separator o.a.h.mapreduce.lib.output.TextOutputFormat - svn.apache.org/viewvc/hadoop/common/tags/release-1.0.0/src/…,第 115 行
    • MR2 (YARN),已更改为mapreduce.textoutputformat.separator
    • 我使用的是 1.0.2 hadoop 版本。找不到指定的路径。如何将其导入到我的 java 代码中?
    • 让我们弄清楚新旧 API 的含义。如果您在 hadoop 2 (YARN) 之前使用任何东西,那么无论您使用的是 o.a.h.mapred.TextOutputFormat 还是 o.a.h.mapreduce.lib.output.TextOutputFormat,它都是 mapred.textoutputformat.separator,否则对于 2+ (YARN),它是 mapreduce.textoutputformat.separator,无论您使用的是什么版本您正在使用的 TextOutputFormat。对于基于 Cloudera 的版本,在 v4 之前是 mapred.textoutputformat.separator,v4+ 是 mapreduce.textoutputformat.separator
    猜你喜欢
    • 1970-01-01
    • 2019-11-24
    • 2011-03-06
    • 1970-01-01
    • 2021-09-28
    • 2014-04-20
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多