基於mahout的itembased算法html
事實上mahout分佈式上僅僅是實現了部分算法。比方推薦算法中Item-based和slopone都有hadoop實現和單機版實現,User-based沒有分佈式實現。java
Mahout已實現的算法(單機版和分佈式版)算法
https://mahout.apache.org/users/basics/algorithms.htmlapache
大多數狀況下,咱們僅僅是調用mahout的算法,要麼單機版,要麼分佈式版。分佈式
那麼mahout的分佈式算法怎麼調用呢?oop
事實上mahout分佈式算法調用有兩種方式,優化
一種是命令行提交hadoop任務,ui
一種是java程序提交hadoop任務。spa
1 命令行方式.net
./mahout recommenditembased -sSIMILARITY_LOGLIKELIHOOD -i /home/linger/j2ee-workspace/linger/data/dataset.csv-o /home/linger/j2ee-workspace/linger/data/out.csv --numRecommendations 3
可以參考官方文檔
http://mahout.apache.org/users/recommender/intro-itembased-hadoop.html
2 java程序調用事實上就是先把數據複製到hdfs,而後在hadoop中作運算。
可以參考這篇文章
http://blog.fens.me/hadoop-mahout-mapreduce-itemcf/
PS:mahout有個坑,就是uid和itemid必須爲long型。
可以參考如下這篇文章解決
mahout作推薦時uid,pid爲string類型
http://blog.csdn.net/pan12jian/article/details/38703569
看到這裏,你們應該會認爲,對於mahout已實現算法,調用是很是easy的。
欲更近一層樓,必須學會源代碼分析和源代碼改動,最後還要學會基於map-reduce實現分佈式算法。
學會源代碼分析和源代碼改動,是爲了更好地使用mahout,因爲有時需要依據本身的特定需求來作調整,甚至優化。
學會基於map-reduce實現分佈式算法,是因爲有些算法mahout並無實現,因此要本身開發。
本文連接:http://blog.csdn.net/lingerlanlan/article/details/42087071
本文做者:linger