Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获得字母数字字符串的唯一模运算符_Java_Module_Mapreduce_Hashcode_Hadoop2 - Fatal编程技术网

Java 如何获得字母数字字符串的唯一模运算符

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

我已经编写了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|^|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页面中共享。