2013-08-25 66 views
2

我試圖計算維基百科文檔之間的行相似性。我有格式爲Key class: class org.apache.hadoop.io.Text Value Class: class org.apache.mahout.math.VectorWritable的tf-idf向量。我從這裏以下文本分析的快速瀏覽:https://cwiki.apache.org/confluence/display/MAHOUT/Quick+tour+of+text+analysis+using+the+Mahout+command+lineMahout rowSimilarity

我創建了一個象夫矩陣如下:

mahout rowid \ 
    -i wikipedia-vectors/tfidf-vectors/part-r-00000 
    -o wikipedia-matrix 

我得到了生成的行數和列:

vectors.RowIdJob: Wrote out matrix with 4587604 rows and 14121544 columns to wikipedia-matrix/matrix 

的矩陣格式爲Key class: class org.apache.hadoop.io.IntWritable Value Class: class org.apache.mahout.math.VectorWritable

我還有一個docIndex文檔,格式如下:Key class: class org.apache.hadoop.io.IntWritable Value Class: class org.apache.hadoop.io.Text

然後當我運行rowsimilarity工作

mahout rowsimilarity 
    -i wikipedia-matrix/matrix 
    -o wikipedia-similarity 
    -r 4587604 
    --similarityClassname SIMILARITY_COSINE 
    -m 50 
    -ess 

我收到以下錯誤:

13/08/25 15:18:18 INFO mapred.JobClient: Task Id : attempt_201308161435_0364_m_000001_1, Status : FAILED 
java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.mahout.math.VectorWritable 
    at org.apache.mahout.math.hadoop.similarity.cooccurrence.RowSimilarityJob$VectorNormMapper.map(RowSimilarityJob.java:183) 
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144) 
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:648) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:322) 
    at org.apache.hadoop.mapred.Child$4.run(Child.java:266) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:396) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1278) 
    at org.apache.hadoop.mapred.Child.main(Child.java:260) 

可能有人請幫助我的錯誤?我不確定當輸入矩陣格式爲org.apache.hadoop.io.TextKey class: class org.apache.hadoop.io.IntWritable Value Class: class org.apache.mahout.math.VectorWritable

非常感謝。

最佳, 德拉甘

+0

當我在單節點模式下在本地機器上運行它時,我沒有這個問題。可能我應該提到hadoop集羣運行在Cloudera 0.20.2-cdh3u6上。羣集上的Mahout版本是mahout-0.5 + 9.11(http://tinyurl.com/qhjl4xh)。我試圖對mahout-0.5運行rowSimilarity,但它在這個版本中不可用。它只是從0.6開始。我試着從0.6到0.9的所有版本,但沒有成功。單節點實例的問題在於它爲中間結果消耗了大量磁盤空間(超過100GB),我沒有它 –

+0

現在我用以下命令運行它hadoop jar mahout-examples -0.9-SNAPSHOT.jar org.apache.mahout.math.hadoop.similarity.cooccurrence.RowSimilarityJob -i/user/dmilchev/wikipedia-matrix/matrix -o/user/dmilchev/wikipedia-similarity -r 4587604 --similarityClassname SIMILARITY_COSINE -m 50 -ess,我沒有得到任何錯誤。我想我的問題解決了。 –

回答

3

我解決它使用下面的命令:

hadoop jar mahout-examples-0.9-SNAPSHOT.jar 
org.apache.mahout.math.hadoop.similarity.cooccurrence.RowSimilarityJob 
-i /user/dmilchev/wikipedia-matrix/matrix 
-o /user/dmilchev/wikipedia-similarity 
-r 4587604 --similarityClassname SIMILARITY_COSINE -m 50 -ess 

,我沒有得到任何錯誤。