2012-03-02 60 views
1

在hdfs的输入目录中添加lined-sinple-sorted.txt和users.txt后,在hadoop上运行RecommenderJob时出现问题

我试图运行以下命令。

​​

然后我得到了以下错误:

12/03/02 06:17:06 INFO common.AbstractJob: Command line arguments: {--booleanData=[false], --endPhase=[2147483647], --maxPrefsPerUser=[10], --maxPrefsPerUserInItemSimilarity=[1000], --maxSimilaritiesPerItem=[100], --minPrefsPerUser=[1], --numRecommendations=[10], --similarityClassname=[SIMILARITY_PEARSON_CORRELATION], --startPhase=[0], --tempDir=[temp], --usersFile=[input/users.txt]} 
12/03/02 06:17:06 INFO common.AbstractJob: Command line arguments: {--booleanData=[false], --endPhase=[2147483647], --input=[input/input.txt], --maxPrefsPerUser=[1000], --minPrefsPerUser=[1], --output=[temp/preparePreferenceMatrix], --ratingShift=[0.0], --startPhase=[0], --tempDir=[temp]} 
12/03/02 06:17:07 INFO input.FileInputFormat: Total input paths to process : 1 
12/03/02 06:17:08 INFO mapred.JobClient: Running job: job_201203020113_0018 
12/03/02 06:17:09 INFO mapred.JobClient: map 0% reduce 0% 
12/03/02 06:17:23 INFO mapred.JobClient: Task Id : attempt_201203020113_0018_m_000000_0, Status : FAILED 
java.lang.ArrayIndexOutOfBoundsException: 1 

    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:621) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305) 
    at org.apache.hadoop.mapred.Child.main(Child.java:170) 

12/03/02 06:17:29 INFO mapred.JobClient: Task Id : attempt_201203020113_0018_m_000000_1, Status : FAILED 
java.lang.ArrayIndexOutOfBoundsException: 1 

    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:621) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305) 
    at org.apache.hadoop.mapred.Child.main(Child.java:170) 

12/03/02 06:17:35 INFO mapred.JobClient: Task Id : attempt_201203020113_0018_m_000000_2, Status : FAILED 
java.lang.ArrayIndexOutOfBoundsException: 1 

    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:621) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305) 
    at org.apache.hadoop.mapred.Child.main(Child.java:170) 

12/03/02 06:17:44 INFO mapred.JobClient: Job complete: job_201203020113_0018 
12/03/02 06:17:44 INFO mapred.JobClient: Counters: 3 
12/03/02 06:17:44 INFO mapred.JobClient: Job Counters 
12/03/02 06:17:44 INFO mapred.JobClient:  Launched map tasks=4 
12/03/02 06:17:44 INFO mapred.JobClient:  Data-local map tasks=4 
12/03/02 06:17:44 INFO mapred.JobClient:  Failed map tasks=1 
Exception in thread "main" java.io.IOException: Cannot open filename /user/hduser/temp/preparePreferenceMatrix/numUsers.bin 
    at org.apache.hadoop.hdfs.DFSClient$DFSInputStream.openInfo(DFSClient.java:1497) 
    at org.apache.hadoop.hdfs.DFSClient$DFSInputStream.<init>(DFSClient.java:1488) 
    at org.apache.hadoop.hdfs.DFSClient.open(DFSClient.java:376) 
    at org.apache.hadoop.hdfs.DistributedFileSystem.open(DistributedFileSystem.java:178) 
    at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:356) 
    at org.apache.mahout.common.HadoopUtil.readInt(HadoopUtil.java:267) 
    at org.apache.mahout.cf.taste.hadoop.item.RecommenderJob.run(RecommenderJob.java:162) 
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 
    at org.apache.mahout.cf.taste.hadoop.item.RecommenderJob.main(RecommenderJob.java:293) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:156) 

是我必须做的,从这个错误中走出来(是它可能然后写命令)

您的帮助将不胜感激。

回答

4

您的意见不正确。它需要以制表符或逗号分隔。

+0

感谢名单sean.Are你说的输入文件(链接简单sorted.txt)。或者我是否需要在命令中键入的内容进行更改。 – 2012-03-03 16:18:06

+0

您的输入数据文件。 – 2012-03-03 16:47:29

+0

输入文件与user_id相似:(空格)item_id .when曾尝试将其转换为csv中的文件。它生成如下==> user_id:,item_id1,item_id2。我无法获得解决方案。如何转换如==> user_id:item_id1,item_id2.Is它可以运行RecommenderJob与csv像=> user_id,item_id1 user_id,item_id2 user_id,item_id3 user_id,item_id4。 – 2012-03-03 18:04:32

2

我有同样的问题,这是我得到它的工作。

我第一次尝试替换“:”通过“”:

sed -i 's/: /,/' links-simple-sorted.txt 

因为这没”工作,我抬起头来的文件,似乎该文件已被重新格式化:每行必须是通过1条+ X线所取代,每个开始与用户名,随后每行一个链路。:

awk -F, -v OFS="," '{ user = $1; split($2, links, " "); for (link in links) { print user,links[link]; } }' links-simple-sorted.txt > input.txt 

然后我上传新文件:

bin/hadoop fs -put input.txt input/input.txt 

现在该示例正在使用上述命令bin/hadoop jar ...运行。

+1

你从无数的挫折时刻中拯救了我 – daydreamer 2015-02-10 01:06:01

+0

输出部分文件虽然是空的,你知道为什么吗?我的'users.txt'里面有一行'3'。让我知道 – daydreamer 2015-02-10 01:36:09

+0

对不起,我从这里不能告诉。检查你的hadoop日志和计数器是否有任何异常。 – exic 2015-02-10 07:21:01

0

我也有这个问题,有正确的CSV格式,并感到困惑了一段时间。

最后问题是我有一个空行隐藏在文件末尾,我没有注意到。

希望能省一点别人的血压。

相关问题