2013-05-17 68 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]); 
相關問題