keyvaluelinerecordreader

keyvaluelinerecordreader

我正在Java中使用mapreduce读取以':'分隔的键值类型文件。我想出了如何解析文件(使用 getConf()。set(“mapreduce.input.keyvaluelinerecordreader.key.value.separator”,“:”);)。我试图找出这些参数的存储位置,但是找不到。我在hadoop安装上做了grep,但是没有设置这些参数的xml文件。根据Configuration类的documentation,我尝试在mapred-default.xml中找到该值,但是没有运气。

在哪里可以找到这些值?其他一些参数也是如此。

谢谢。

最佳答案

它应该存在于mapred-site.xml中。但是,默认情况下不会将其添加到XML文件。如果对于每个作业,您都使用相同的定界符,则可以将此参数添加到Hadoop安装中的mapred-site.xml文件中。

此参数的此设置在代码中处理。

org.apache.hadoop.mapreduce.lib.input.KeyValueLineRecordReader.java中(选中KeyValueLineRecordReader.java),默认情况下该值设置为tab(“\ t”)。

public static final String KEY_VALUE_SEPERATOR =
"mapreduce.input.keyvaluelinerecordreader.key.value.separator";

该值在KeyValueLineRecordReader类的构造函数中设置:
String sepStr = conf.get(KEY_VALUE_SEPERATOR, "\t");

09-25 20:07