在此类的博客中,博主主要记录的是在Hadoop实践过程中遇到的一些错误,先上一个代码
1 protected void map(Object key,Text value, Context context) 2 throws IOException, InterruptedException { 3 fanData.getInstance(value.toString()); 4 String name=fanData.getFanNo(); 5 if(tm.get(name)==null){ 6 tm.put(name,one); 7 } 8 else{ 9 for (java.util.Map.Entry<String,Integer> entry : tm.entrySet()) { 10 if(entry.getKey().toString().equals(name)){ 11 int a=entry.getValue(); 12 a++; 13 System.out.println(a); 14 tm.put(name,a); 15 } 16 } 17 } 18 19 }
代码中展示的是一个map方法,代码是修改过后的正确的内容
【错误一】
运行下列一个语句时,如果map中的key(即name)相同的话,数据会自动覆盖的
tm.put(name,one);
【错误二】
entry.getKey()==name//false entry.getKey().toString()==name//false entry.getKey().toString().equals(name)//true
在上述代码中,
entry.getKey()
是一个Text类型,而
name
是一个String类型,需要将两者进行比较的话只有第三个语句才是正确的