我是hadoop和java的新手。我正在使用Hadoop 2.X并尝试更改wordcount源代码,以便当我在文本上运行wordcount时,它同时考虑“。”,“,”或“”分隔符,而不仅仅是“\ t”。我发现使用以下方法更改配置:
conf.set("mapreduce.input.keyvaluelinerecordreader.key.value.separator", " ");
但是,即使将分隔符更改为“,”也不起作用。代码运行没有崩溃,但我得到的结果与我使用默认分隔符“\ t”运行wordcount的结果相同。
感谢您的帮助!
答案 0 :(得分:0)
您正在寻找正确的地方。您无需更改源代码:只需添加命令行arg
bin/hadoop job -Dkey.value.separator.in.input.line=,
请注意,属性名称已更改。
此外,它可能不支持您要查找的多个分隔符。
您可以在此处找到更多信息http://www.feeny.org/changing-keyvalue-split-delimeter-in-hadoop-20-2/
<强>更新强>
以下是您可能会更改的来源
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
22 String line = value.toString(); 23 StringTokenizer tokenizer = new StringTokenizer(line,&#34;。,&#34;);