gpt4 book ai didi

java - 文本未转换为String Hadoop Java

转载 作者:行者123 更新时间:2023-12-02 22:07:27 24 4
gpt4 key购买 nike

我正在尝试在我的reduce函数中将Text转换为String,但无法正常工作。我在Map函数中尝试了相同的逻辑,但效果很好,但是当我尝试在我的reduce函数中应用此逻辑时,它给出了错误:java.lang.ArrayIndexOutOfBoundsException 1

我的 map 代码是这样的

public static class OutDegreeMapper2 
extends Mapper<Object, Text, Text, Text>
{

private Text word = new Text();
private Text word2 = new Text();

public void map(Object key, Text value, Context context
) throws IOException, InterruptedException
{
String oneLine = value.toString();
String[] parts = oneLine.split("\t");
word.set(parts[0]);
String join = parts[1]+",from2";
word2.set(join);

context.write(word, word2);
}
}

我的reduce功能是这样的
public static class OutDegreeReducer 
extends Reducer<Text,Text,Text,Text>
{
private Text word = new Text();
String merge ="";
public void reduce(Text key, Iterable<Text> values,
Context context
) throws IOException, InterruptedException
{

for(Text val:values)
{

String[] x = val.toString().split(",");

if(x[1].contains("from2")){
merge+= x[0];
}

}
word.set(merge);
context.write(key, word);
}
}

请告诉我为什么split在map函数中起作用而在reducer中不起作用?

最佳答案

很可能在这里

String[] parts = oneLine.split("\t");
word.set(parts[0]);
String join = parts[1]+",from2";

还是这里
String[] x = val.toString().split(",");

if(x[1].contains("from2")){
merge+= x[0];
}

当读取的 x[1]parts[1]抛出ArrayIndexOutOfBoundsException时,因为字符串内没有 ,\t

我建议在访问元素1之前检查数组的大小。

查看stacktrace,您应该能够了解在哪里引发异常。

关于java - 文本未转换为String Hadoop Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43668980/

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