Я пытаюсь написать код Java MapReduce и продолжаю получать сообщение об ошибке:
Error: java.lang.NumberFormatException: For input string: "time"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:589)
at java.lang.Long.parseLong(Long.java:631)
at TokenizerMapper.map(Unknown Source)
at TokenizerMapper.map(Unknown Source)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:793)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1917)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Код карты, о котором идет речь, выглядит следующим образом:
public class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {
private final IntWritable one = new IntWritable(1);
private Text data = new Text();
String[] transactionData = new String[5];
public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString(), ",");
while (itr.hasMoreTokens()) {
for (int i = 0; i < 5; i++) {
transactionData[i] = itr.nextToken();
}
Long timestamp = Long.parseLong(transactionData[2]);
Instant instant = Instant.ofEpochSecond(timestamp);
LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneId.of("GMT"));
int year = ldt.getYear(); //e.g 2009
Month month = ldt.getMonth(); //e.g JANUARY
String time = month.toString() + ":" + Integer.toString(year);
data.set(time);
context.write(data, one);
}
}
}
Предполагается, что он принимает 3-е значениев каждой строке набора данных CSV, который представляет собой число, преобразуйте его в строку, преобразуйте в длинную и используйте длинную, чтобы найти месяц и год.
где я иду не так?спасибо.
edit // Пример записи:
0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098,00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048,1231469665,1,1