Error: java.lang.NumberFormatException: For input string: “time”












1















Im trying to write java MapReduce code and keep getting the error:



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)


The mapper code in question is the following



    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);
}
}
}


It is supposed to take the 3rd value in each line of a csv dataset, which is a number, convert this to string, convert that to long and use the long to find the month and year.



where am i going wrong? thanks.



edit// Sample entry:



0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098,00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048,1231469665,1,1









share|improve this question

























  • We love having you here: what does your data look like?

    – nicomp
    Nov 25 '18 at 17:47











  • Your data has the word time in the column where you're expecting a number. Is this text from the header row perhaps? Did you forget to skip the header row of your data?

    – Dawood ibn Kareem
    Nov 25 '18 at 17:50











  • Thanks, added sample entry, the data is a list of bitcoin transactions and im trying to use hadoop to find number of transactions each month.

    – SE Project
    Nov 25 '18 at 17:55











  • Is there a header row in your data set that you're not ignoring?

    – Joe C
    Nov 25 '18 at 17:59
















1















Im trying to write java MapReduce code and keep getting the error:



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)


The mapper code in question is the following



    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);
}
}
}


It is supposed to take the 3rd value in each line of a csv dataset, which is a number, convert this to string, convert that to long and use the long to find the month and year.



where am i going wrong? thanks.



edit// Sample entry:



0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098,00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048,1231469665,1,1









share|improve this question

























  • We love having you here: what does your data look like?

    – nicomp
    Nov 25 '18 at 17:47











  • Your data has the word time in the column where you're expecting a number. Is this text from the header row perhaps? Did you forget to skip the header row of your data?

    – Dawood ibn Kareem
    Nov 25 '18 at 17:50











  • Thanks, added sample entry, the data is a list of bitcoin transactions and im trying to use hadoop to find number of transactions each month.

    – SE Project
    Nov 25 '18 at 17:55











  • Is there a header row in your data set that you're not ignoring?

    – Joe C
    Nov 25 '18 at 17:59














1












1








1








Im trying to write java MapReduce code and keep getting the error:



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)


The mapper code in question is the following



    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);
}
}
}


It is supposed to take the 3rd value in each line of a csv dataset, which is a number, convert this to string, convert that to long and use the long to find the month and year.



where am i going wrong? thanks.



edit// Sample entry:



0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098,00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048,1231469665,1,1









share|improve this question
















Im trying to write java MapReduce code and keep getting the error:



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)


The mapper code in question is the following



    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);
}
}
}


It is supposed to take the 3rd value in each line of a csv dataset, which is a number, convert this to string, convert that to long and use the long to find the month and year.



where am i going wrong? thanks.



edit// Sample entry:



0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098,00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048,1231469665,1,1






java hadoop mapreduce






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 25 '18 at 17:54







SE Project

















asked Nov 25 '18 at 17:45









SE ProjectSE Project

113




113













  • We love having you here: what does your data look like?

    – nicomp
    Nov 25 '18 at 17:47











  • Your data has the word time in the column where you're expecting a number. Is this text from the header row perhaps? Did you forget to skip the header row of your data?

    – Dawood ibn Kareem
    Nov 25 '18 at 17:50











  • Thanks, added sample entry, the data is a list of bitcoin transactions and im trying to use hadoop to find number of transactions each month.

    – SE Project
    Nov 25 '18 at 17:55











  • Is there a header row in your data set that you're not ignoring?

    – Joe C
    Nov 25 '18 at 17:59



















  • We love having you here: what does your data look like?

    – nicomp
    Nov 25 '18 at 17:47











  • Your data has the word time in the column where you're expecting a number. Is this text from the header row perhaps? Did you forget to skip the header row of your data?

    – Dawood ibn Kareem
    Nov 25 '18 at 17:50











  • Thanks, added sample entry, the data is a list of bitcoin transactions and im trying to use hadoop to find number of transactions each month.

    – SE Project
    Nov 25 '18 at 17:55











  • Is there a header row in your data set that you're not ignoring?

    – Joe C
    Nov 25 '18 at 17:59

















We love having you here: what does your data look like?

– nicomp
Nov 25 '18 at 17:47





We love having you here: what does your data look like?

– nicomp
Nov 25 '18 at 17:47













Your data has the word time in the column where you're expecting a number. Is this text from the header row perhaps? Did you forget to skip the header row of your data?

– Dawood ibn Kareem
Nov 25 '18 at 17:50





Your data has the word time in the column where you're expecting a number. Is this text from the header row perhaps? Did you forget to skip the header row of your data?

– Dawood ibn Kareem
Nov 25 '18 at 17:50













Thanks, added sample entry, the data is a list of bitcoin transactions and im trying to use hadoop to find number of transactions each month.

– SE Project
Nov 25 '18 at 17:55





Thanks, added sample entry, the data is a list of bitcoin transactions and im trying to use hadoop to find number of transactions each month.

– SE Project
Nov 25 '18 at 17:55













Is there a header row in your data set that you're not ignoring?

– Joe C
Nov 25 '18 at 17:59





Is there a header row in your data set that you're not ignoring?

– Joe C
Nov 25 '18 at 17:59












1 Answer
1






active

oldest

votes


















-1














If the problem is a header, just replace the line that causes the problem:



Long timestamp = Long.parseLong(transactionData[2]);


with



Long timestamp = 0L;
try {
timestamp = Long.parseLong(transactionData[2]);
} catch (NumberFormatException e) {
return;
}


So if the value is invalid the method will terminate without crashing.






share|improve this answer
























  • So if there's a line of header data, then no data at all should get mapped? This solution makes no sense to me.

    – Dawood ibn Kareem
    Nov 25 '18 at 18:28











  • @DawoodibnKareem no it skips only that line. The method works for 1 line. Isn't this obvious? Why do you think OP accepted the answer?

    – forpas
    Nov 25 '18 at 18:30











  • Well, I don't know why OP accepted your answer. But if you put YOUR code into THEIR method, the return; statement causes their method to end without mapping any data.

    – Dawood ibn Kareem
    Nov 25 '18 at 18:34











  • Well, I don't know why OP accepted your answer then why don't you ask him first if you have any doubts? Why does anyone accept an answer if this is not the solution for him?

    – forpas
    Nov 25 '18 at 18:36











  • My apologies for not responding earlier, This solution worked for myself and several others stuck on the same assignment question. - Thanks for help

    – SE Project
    Dec 5 '18 at 14:50













Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53470191%2ferror-java-lang-numberformatexception-for-input-string-time%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









-1














If the problem is a header, just replace the line that causes the problem:



Long timestamp = Long.parseLong(transactionData[2]);


with



Long timestamp = 0L;
try {
timestamp = Long.parseLong(transactionData[2]);
} catch (NumberFormatException e) {
return;
}


So if the value is invalid the method will terminate without crashing.






share|improve this answer
























  • So if there's a line of header data, then no data at all should get mapped? This solution makes no sense to me.

    – Dawood ibn Kareem
    Nov 25 '18 at 18:28











  • @DawoodibnKareem no it skips only that line. The method works for 1 line. Isn't this obvious? Why do you think OP accepted the answer?

    – forpas
    Nov 25 '18 at 18:30











  • Well, I don't know why OP accepted your answer. But if you put YOUR code into THEIR method, the return; statement causes their method to end without mapping any data.

    – Dawood ibn Kareem
    Nov 25 '18 at 18:34











  • Well, I don't know why OP accepted your answer then why don't you ask him first if you have any doubts? Why does anyone accept an answer if this is not the solution for him?

    – forpas
    Nov 25 '18 at 18:36











  • My apologies for not responding earlier, This solution worked for myself and several others stuck on the same assignment question. - Thanks for help

    – SE Project
    Dec 5 '18 at 14:50


















-1














If the problem is a header, just replace the line that causes the problem:



Long timestamp = Long.parseLong(transactionData[2]);


with



Long timestamp = 0L;
try {
timestamp = Long.parseLong(transactionData[2]);
} catch (NumberFormatException e) {
return;
}


So if the value is invalid the method will terminate without crashing.






share|improve this answer
























  • So if there's a line of header data, then no data at all should get mapped? This solution makes no sense to me.

    – Dawood ibn Kareem
    Nov 25 '18 at 18:28











  • @DawoodibnKareem no it skips only that line. The method works for 1 line. Isn't this obvious? Why do you think OP accepted the answer?

    – forpas
    Nov 25 '18 at 18:30











  • Well, I don't know why OP accepted your answer. But if you put YOUR code into THEIR method, the return; statement causes their method to end without mapping any data.

    – Dawood ibn Kareem
    Nov 25 '18 at 18:34











  • Well, I don't know why OP accepted your answer then why don't you ask him first if you have any doubts? Why does anyone accept an answer if this is not the solution for him?

    – forpas
    Nov 25 '18 at 18:36











  • My apologies for not responding earlier, This solution worked for myself and several others stuck on the same assignment question. - Thanks for help

    – SE Project
    Dec 5 '18 at 14:50
















-1












-1








-1







If the problem is a header, just replace the line that causes the problem:



Long timestamp = Long.parseLong(transactionData[2]);


with



Long timestamp = 0L;
try {
timestamp = Long.parseLong(transactionData[2]);
} catch (NumberFormatException e) {
return;
}


So if the value is invalid the method will terminate without crashing.






share|improve this answer













If the problem is a header, just replace the line that causes the problem:



Long timestamp = Long.parseLong(transactionData[2]);


with



Long timestamp = 0L;
try {
timestamp = Long.parseLong(transactionData[2]);
} catch (NumberFormatException e) {
return;
}


So if the value is invalid the method will terminate without crashing.







share|improve this answer












share|improve this answer



share|improve this answer










answered Nov 25 '18 at 18:12









forpasforpas

11.7k3424




11.7k3424













  • So if there's a line of header data, then no data at all should get mapped? This solution makes no sense to me.

    – Dawood ibn Kareem
    Nov 25 '18 at 18:28











  • @DawoodibnKareem no it skips only that line. The method works for 1 line. Isn't this obvious? Why do you think OP accepted the answer?

    – forpas
    Nov 25 '18 at 18:30











  • Well, I don't know why OP accepted your answer. But if you put YOUR code into THEIR method, the return; statement causes their method to end without mapping any data.

    – Dawood ibn Kareem
    Nov 25 '18 at 18:34











  • Well, I don't know why OP accepted your answer then why don't you ask him first if you have any doubts? Why does anyone accept an answer if this is not the solution for him?

    – forpas
    Nov 25 '18 at 18:36











  • My apologies for not responding earlier, This solution worked for myself and several others stuck on the same assignment question. - Thanks for help

    – SE Project
    Dec 5 '18 at 14:50





















  • So if there's a line of header data, then no data at all should get mapped? This solution makes no sense to me.

    – Dawood ibn Kareem
    Nov 25 '18 at 18:28











  • @DawoodibnKareem no it skips only that line. The method works for 1 line. Isn't this obvious? Why do you think OP accepted the answer?

    – forpas
    Nov 25 '18 at 18:30











  • Well, I don't know why OP accepted your answer. But if you put YOUR code into THEIR method, the return; statement causes their method to end without mapping any data.

    – Dawood ibn Kareem
    Nov 25 '18 at 18:34











  • Well, I don't know why OP accepted your answer then why don't you ask him first if you have any doubts? Why does anyone accept an answer if this is not the solution for him?

    – forpas
    Nov 25 '18 at 18:36











  • My apologies for not responding earlier, This solution worked for myself and several others stuck on the same assignment question. - Thanks for help

    – SE Project
    Dec 5 '18 at 14:50



















So if there's a line of header data, then no data at all should get mapped? This solution makes no sense to me.

– Dawood ibn Kareem
Nov 25 '18 at 18:28





So if there's a line of header data, then no data at all should get mapped? This solution makes no sense to me.

– Dawood ibn Kareem
Nov 25 '18 at 18:28













@DawoodibnKareem no it skips only that line. The method works for 1 line. Isn't this obvious? Why do you think OP accepted the answer?

– forpas
Nov 25 '18 at 18:30





@DawoodibnKareem no it skips only that line. The method works for 1 line. Isn't this obvious? Why do you think OP accepted the answer?

– forpas
Nov 25 '18 at 18:30













Well, I don't know why OP accepted your answer. But if you put YOUR code into THEIR method, the return; statement causes their method to end without mapping any data.

– Dawood ibn Kareem
Nov 25 '18 at 18:34





Well, I don't know why OP accepted your answer. But if you put YOUR code into THEIR method, the return; statement causes their method to end without mapping any data.

– Dawood ibn Kareem
Nov 25 '18 at 18:34













Well, I don't know why OP accepted your answer then why don't you ask him first if you have any doubts? Why does anyone accept an answer if this is not the solution for him?

– forpas
Nov 25 '18 at 18:36





Well, I don't know why OP accepted your answer then why don't you ask him first if you have any doubts? Why does anyone accept an answer if this is not the solution for him?

– forpas
Nov 25 '18 at 18:36













My apologies for not responding earlier, This solution worked for myself and several others stuck on the same assignment question. - Thanks for help

– SE Project
Dec 5 '18 at 14:50







My apologies for not responding earlier, This solution worked for myself and several others stuck on the same assignment question. - Thanks for help

– SE Project
Dec 5 '18 at 14:50




















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53470191%2ferror-java-lang-numberformatexception-for-input-string-time%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks

Calculate evaluation metrics using cross_val_predict sklearn

Insert data from modal to MySQL (multiple modal on website)