我在数组中有字符串。我需要将基于索引的数组的所有元素附加到mapreduce中的Text()
。我需要的值作为字符串附加在文本()如何将数组中的字符串附加到mapreduce中的Text()
例如:
String s = "12,23";
String[] array = s.split(",");
Text t1 = new Text();
for(int i=0;i<array.length;i++) {
t1.append(array[i]);
}
我在数组中有字符串。我需要将基于索引的数组的所有元素附加到mapreduce中的Text()
。我需要的值作为字符串附加在文本()如何将数组中的字符串附加到mapreduce中的Text()
例如:
String s = "12,23";
String[] array = s.split(",");
Text t1 = new Text();
for(int i=0;i<array.length;i++) {
t1.append(array[i]);
}
您需要使用此方法:append(byte[] utf8, int start, int len)
(Javadoc)
所以,你的代码看起来是这样的:
t1.append(array[i].getBytes(), 0, array[i].getBytes().length);
作为快速单元测试:
@Test
public void textAppendTest() {
String s = "12,23";
String[] array = s.split(",");
Text t1 = new Text();
for(int i=0;i<array.length;i++){
t1.append(array[i].getBytes(), 0, array[i].getBytes().length);
}
System.out.println(t1); // prints 1223
}
你可以做这样无需splited字符串数组的:
String str = "12,23";
String newStr = str.replace("," , ""); // or replace with any character or string you want between those numbers
Text text = new Text(newStr);
我不想在这种方法做,我必须基于索引访问 – Ninja
@Binary书呆子:
我想下面的步骤:
添加以下线的方法初始化()
in = new LineReader(filein, conf);
while (in.readLine(line) > 0) {
length.add(line.toString());
count++;
}
2。这样做
value = new Text();
value.append(length.get(i).getBytes(), 0, length.get(i).getBytes().length);
它不是给我的附加结果..
你应该添加此你的问题是否是一个澄清,它不是一个答案。它不清楚上面的代码是如何适合你的问题的。2.''适合哪里? –
那么,2.将被添加到nextKeyValue()方法中customRecordReader – Ninja
这听起来像你指的是你提出的另一个问题,我建议你保持问题的焦点,因为这个问题是(并且已经在我的意见中得到了回答),并询问另一个问题是否有其他问题。 –
它走只有最后一个值,我的意思是我得到只有23作为输出.. – Ninja
@Ninja - 我只是增加了一个修正,它现在适用于我 –
我也试过,我用0替换了开始。它不适用于我:( – Ninja