将目录作为spark-itemsimilarity的输入路径时出错?

时间:2015-05-28 14:41:31

标签: apache-spark mahout recommendation-engine mahout-recommender

从终端运行mahout spark-itemsimilarity并输入目录路径时,我遇到以下错误。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at org.apache.mahout.math.cf.SimilarityAnalysis$.cooccurrencesIDSs(SimilarityAnalysis.scala:119)
    at org.apache.mahout.drivers.ItemSimilarityDriver$.process(ItemSimilarityDriver.scala:214)
    at org.apache.mahout.drivers.ItemSimilarityDriver$$anonfun$main$1.apply(ItemSimilarityDriver.scala:116)
    at org.apache.mahout.drivers.ItemSimilarityDriver$$anonfun$main$1.apply(ItemSimilarityDriver.scala:114)
    at scala.Option.map(Option.scala:145)
    at org.apache.mahout.drivers.ItemSimilarityDriver$.main(ItemSimilarityDriver.scala:114)
    at org.apache.mahout.drivers.ItemSimilarityDriver.main(ItemSimilarityDriver.scala)

提前致谢。

2 个答案:

答案 0 :(得分:3)

Github的0.10.x分支上使用Mahout 0.10.1-SNAPSHOT,因为它不需要-D:spark ...选项。

使用目录作为输入需要一个匹配文件的模式。默认模式与HDFS“part-xxxxx”文件匹配。使用以下命令:

$ mahout spark-itemsimilarity -i /home/kulwant/data/ -fp ".*csv" -o /home/kulwant/output/ --master spark://kulwant-VirtualBox:7077 -id "," --itemIDColumn 0 --rowIDColumn 1

RowID =用户ID因此,根据您的数据,我认为您的项目和行列相反。 item id似乎在第0列,而row / user在第1列(我已在上面修复)。

答案 1 :(得分:0)

@eliasah

./mahout spark-itemsimilarity -D:spark.executor.extraClassPath=/home/kulwant/mahout/spark/target/mahout-spark_2.10-0.11.0-SNAPSHOT-dependency-reduced.jar --input /home/kulwant/data/ 

- output / home / kulwant / output --master spark:// kulwant-VirtualBox:7077 --inDelim, - itemIDolumn 1 --rowIDColumn 0

这是我从终端执行的命令