我在java中使用mapreduce读取用":"分隔的键值类型文件。我了解了如何解析该文件(使用getConf().set("mapreduce.input.keyvaluelinerecordreader.key.value.separator",":");)。我试图找出这些参数的存储位置,但无法找到。我在hadoop安装上做了一个grep,但没有设置这些参数的xml文件。根据Configuration类的文档,我试图在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");