Hadoop 划桨手
我试图计算维基百科文档之间的行相似性。我有格式为Hadoop 划桨手,hadoop,mahout,cosine-similarity,Hadoop,Mahout,Cosine Similarity,我试图计算维基百科文档之间的行相似性。我有格式为的tf idf向量:class org.apache.hadoop.io.Text Value class:class org.apache.mahout.math.VectorWritable。我将从这里快速浏览文本分析: 我创建了一个mahout矩阵,如下所示: mahout rowid \ -i wikipedia-vectors/tfidf-vectors/part-r-00000 -o wikipedia-matrix 我得
的tf idf向量:class org.apache.hadoop.io.Text Value class:class org.apache.mahout.math.VectorWritable
。我将从这里快速浏览文本分析:
我创建了一个mahout矩阵,如下所示:
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
然后,当我运行该作业时
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)
有人能帮我纠正这个错误吗?当输入矩阵的格式为Key class:class org.apache.hadoop.io.IntWritable Value class:class org.apache.hadoop.mahout.math.VectorWritable时,我不确定这是从哪里来的org.apache.hadoop.io.Text
多谢各位
最好的,
德拉根我用以下命令解决了这个问题:
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
我没有收到任何错误。当我在本地机器上以单节点模式运行它时,我没有这个问题。也许我应该提到hadoop集群运行在Cloudera 0.20.2-cdh3u6上。集群上的Mahout版本是Mahout-0.5+9.11()。我试图对mahout-0.5运行rowSimilarity,但在这个版本中不可用。它仅从0.6开始。我尝试了从0.6到0.9的所有版本,但没有成功。对于我来说,单节点实例的问题是它为中间结果(超过100GB)消耗了大量磁盘空间,现在我用以下命令运行它: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\u COSINE-m50-ess,我没有得到任何错误。我想我的问题解决了。