gpt4 book ai didi

java - 如何填写Mapper?

转载 作者:行者123 更新时间:2023-12-02 21:47:44 24 4
gpt4 key购买 nike

public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {

String line = value.toString();
int left = line.indexOf("{");
int right = line.indexOf("}");
String subMyString = line.substring(left+1, right);

for (String myWord : subMyString.split("\\W+")) {
if (myWord.length() > 0)
context.write(new Text(myWord), new IntWritable(1));
}
}

在我的mapper.class中

和我的输入文件:
...

...bla..bla..{asd assda sddsaasd asd}

...bla..bla..{asd assda sddsaasd asd}

...bla..bla..{asd assda sddsaasd asd}

...

自然地: line= ...bla..bla..{asd assda sddsaasd asd}在所有行中都包含“{”和“}”字符。我想在这些字符之间填充contex。但是我在编译过程中得到了 java.lang.StringIndexOutOfBoundsException

我应该如何更改我的代码?为什么会出现错误?

谢谢。

最佳答案

从提供的代码中,有两种方法可以获取java.lang.StringIndexOutOfBoundsException

  • 您正在运行的输入中的{}不平衡。
  • 无法处理值中没有{}的情况。因为,如果它们不存在于值中,则leftright变量变为-1。因此,您会得到一个StringIndexOutOfBoundsException

  • 因此,您应该更改的代码如下所示:
      //......
    int left = line.indexOf("{");
    int right = line.indexOf("}");

    if(left > 0 && right > 0){
    String subMyString = line.substring(left+1, right);
    for (String myWord : subMyString.split("\\W+")) {
    if (myWord.length() > 0)
    context.write(new Text(myWord), new IntWritable(1));
    }
    }
    //..........

    关于java - 如何填写Mapper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23742707/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com