Java 如何获得字母数字字符串的唯一模运算符
我已经编写了mapreduce应用程序,它可以从HBase读取记录并在中写入文本文件。 当我写了很多if-else的时候,我使用了定制的分区器类,基于这些类我写了2k文本文件 问题是,我有2k,如果不是这样的条件Java 如何获得字母数字字符串的唯一模运算符,java,module,mapreduce,hashcode,hadoop2,Java,Module,Mapreduce,Hashcode,Hadoop2,我已经编写了mapreduce应用程序,它可以从HBase读取记录并在中写入文本文件。 当我写了很多if-else的时候,我使用了定制的分区器类,基于这些类我写了2k文本文件 问题是,我有2k,如果不是这样的条件 if (str.contains("Japan|^|BUS")) { return 0; } else if (str.contains("Japan|^|CAS")) { return 1; } else
if (str.contains("Japan|^|BUS")) {
return 0;
} else if (str.contains("Japan|^|CAS")) {
return 1;
} else if (str.contains("Japan|^|CUS")) {
return 2;
} else if (str.contains("Japan|^|FTN")) {
return 3;
} else if (str.contains("Japan|^|GEO")) {
return 4;
} else if (str.contains("Japan|^|INC")) {
return 5;
} else if (str.contains("Japan|^|OPM")) {
return 6;
} else if (str.contains("Japan|^|PEN")) {
return 7;
} else if (str.contains("Japan|^|SHE")) {
return 8;
}
它一直持续到2000年
我尝试过Hashcode,但发生冲突,无法正确分离键值
return ((Math.abs(strPartitionKey.hashCode())) % setNumRedTask);
我还尝试了使用全局hashmap的hashmap缓存,但这并不适用于所有映射程序,因为对于每个映射程序,hashmap都会重新初始化
如果我得到唯一的数字,那么使用%操作也会导致冲突
请提供帮助。如果我理解正确,您需要生成唯一的数字。是否可以尝试使用指定的种子生成随机整数,以便在遇到字母数字字符串时生成相同的数字。(使用线性同余生成器,因此碰撞机会将非常小)@DeepanRam是的,我也会尝试,但我必须确保不会发生任何碰撞,否则数据查找将非常庞大。如果参数选择得当,碰撞的机会就会减少。示例在wiki页面中共享。