2013-05-17 41 views
4

我试图让象夫的工作,我收到以下错误:亨利马乌:java.lang.NumberFormatException:对于输入字符串:

3/05/16 22:48:53 INFO mapred.MapTask: record buffer = 262144/327680 
13/05/16 22:48:53 WARN mapred.LocalJobRunner: job_local_0001 
java.lang.NumberFormatException: For input string: "1119" 
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
    at java.lang.Long.parseLong(Long.java:430) 
    at java.lang.Long.parseLong(Long.java:483) 
    at org.apache.mahout.cf.taste.hadoop.item.ItemIDIndexMapper.map(ItemIDIndexMapper.java:47) 
    at org.apache.mahout.cf.taste.hadoop.item.ItemIDIndexMapper.map(ItemIDIndexMapper.java:31) 
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144) 
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370) 
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:212) 
13/05/16 22:48:54 INFO mapred.JobClient: map 0% reduce 0% 
13/05/16 22:48:54 INFO mapred.JobClient: Job complete: job_local_0001 
13/05/16 22:48:54 INFO mapred.JobClient: Counters: 0 
Exception in thread "main" java.io.FileNotFoundException: File does not exist: /user/eric.waite/temp/preparePreferenceMatrix/numUsers.bin 
    at org.apache.hadoop.hdfs.DFSClient$DFSInputStream.openInfo(DFSClient.java:1843) 
    at org.apache.hadoop.hdfs.DFSClient$DFSInputStream.<init>(DFSClient.java:1834) 
    at org.apache.hadoop.hdfs.DFSClient.open(DFSClient.java:578) 

我的输入文件是非常简单的:(样本) 用户ID, storyId,等级(1-5)

2840281,1119,2 
2840321,1170,3 
2840323,1124,5 
2840371,1170,5 
2840347,1157,3 
2840371,1172,5 
2840347,1157,5 
2840358,1333,5 
2840371,1172,5 
2840347,1157,5 

我尝试使用下面的命令来运行一个简单的例子:

hadoop jar /sourcecode/mahout/mahout-distribution-0.7/mahout-core-0.7-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -s SIMILARITY_COOCCURRENCE --input ratings.dat --output output 

Java信息:

java版本“1.7.0_13”Java™SE运行时环境(build 1.7.0_13-b20)Java HotSpot™64位服务器VM(版本23.7-b01,混合模式)我在Mac 10.8.2

有没有人有任何建议,为什么整数正在被读为一个字符串,并正在生成NumberFormatException

谢谢。

+0

Java版本 “1.7.0_13” 的Java(TM)SE运行时环境(建立1.7.0_13-B20) 的HotSpot的Java(TM)64 Bit Server VM(build 23.7-b01,mixed mode) 我在Mac上10.8.2 –

+0

export JAVA_HOME ='/ usr/libexec/java_home -v 1.7' –

+0

已经把它放到你的问题中了,对我来说它看起来像Java API中的一个错误(只要我们在该例外的引号之间找不到任何奇怪的字符)。 '1119'应该可以长期解析。 –

回答

1

您可能在这里有一些非印刷字符有趣的业务。它显示的字符串当然可以很好地解析。 (加引号是唯一的错误消息的一部分。)

要明白我的意思,尽量

System.out.println(Long.parseLong("\u00001119")); 

它失败,出现同样的错误,一个是在它的面孔令人费解。

不知道如何调试这个简单的十六进制编辑器。

0

您可以调试RecommendJob并检查发生异常的位置,并检查实际的字符串值,可能是输入文件中的一些空白或无用的字符。 我也有这个例外,并且发生异常我在这里:

String[] tokens = TasteHadoopUtils.splitPrefTokens(value.toString()); 
long itemID = Long.parseLong(tokens[transpose ? 0 : 1]); 
相关问题