Im Versuch, die Datensätze in Wörter basierend auf nicht-alphanumerischen Zeichen zu brechen, zählen Sie den ersten Buchstaben in jedem Wort und erhalten das Gesamtvorkommen des ersten Alphabets in jedem Wort. Unten ist die Mapper-Klassenlogik, die ich auszuführen versuchte.StringIndexOutOfBoundsException in meinem MapReduce-Code
public void map(LongWritable key, Text value, Context ctx) {
String line = value.toString();
String[] split = line.split("\\W+");
String firstChar;
for(String words: split) {
firstChar = String.valueOf(words.charAt(0));
try {
ctx.write(new Text(firstChar), new IntWritable(1));
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
Ausnahme:
Error: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:658)
at com.hadoopexp.mapper.MapperClass.map(MapperClass.java:17)
at com.hadoopexp.mapper.MapperClass.map(MapperClass.java:1)
Aber Im StringIndexOutOfBounds Ausnahme für diese Logik auf der Linie erhalten:
firstChar = String.valueOf(words.charAt(0));
ich einige leere Zeilen in der Eingabedatei nur, wenn sie gesetzt haben, um zu sehen funktioniert. (wie unten)
Kann jemand mir helfen, wie man die Logik repariert. Jede Hilfe wird wirklich geschätzt.
Vielen Dank Mureinik. Es funktioniert. – Sidhartha