1 下载
在http://archive.apache.org/dist/mahout 下载相应版本的mahout 版本,获取官网查看http://mahout.apache.org 相关的信息
下载后解压,
tar -zxvf mahout-distribution-0.9.tar.gz
配置环境变量
export MAHOUT_HOME=/home/sms/mahout-distribution-0.9 export MAHOUT_CONF_DIR=$MAHOUT_HOME/conf export PATH=$MAHOUT_HOME/bin:$PATH
2 启动hadoop运行测试
下载测试数据 http://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data 创建测试目录 testdata,并把数据导入到这个tastdata目录中(这里的目录的名字只能是testdata) hadoop fs -mkdir testdata hadoop fs -put synthetic_control.data testdata 命令测试 hadoop jar /home/sms/mahout-distribution-0.9/mahout-examples-0.9-job.jar org.apache.mahout.clustering.syntheticcontrol.kmeans.Job 命令查看 hadoop fs -ls output 运行结果在 hdfs 上 的 output 的文件夹中,结果是二进制文件,需要转化。 例如转化 output/data/part-m-00000 命令查看 hadoop jar /home/sms/mahout-distribution-0.9/mahout-examples-0.9-job.jar org.apache.mahout.utils.vectors.VectorDumper -i output/data/part-m-00000 本地模式 java -cp /home/sms/mahout-distribution-0.9/mahout-examples-0.9-job.jar org.apache.mahout.utils.vectors.VectorDumper -i /home/sms/output/data/part-m-00000
其它意见
1 一.文本文件向量化 2 Mahout已经提供了工具类,它基于 Lucene 给出了对文本信息进行分析,然后创建文本向量。mahout提供下面两个命令来将文本转成向量形式(转化成向量后可以聚类): 3 4 mahout seqdirectory:将文本文件转成SequenceFile(序列)文件,SequenceFile文件是一种二制制存储的key-value键值对,对应的源文件是org.apache.mahout.text.SequenceFilesFromDirectory.java 5 mahout seq2sparse:将SequenceFile(序列)转成向量文件,对应的源文件是org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles.java 6 7 8 命令: mahout seqdirectory -i /user/hadoop/file1 -o /user/hadoop/file2 9 10 11 查看转化结果: 12 13 mahout seqdumper:将SequenceFile文件转成文本形式,对应的源文件是org.apache.mahout.utils.SequenceFileDumper.java 14 mahout vectordump:将向量文件转成可读的文本形式,对应的源文件是org.apache.mahout.utils.vectors.VectorDumper.java 15 mahout clusterdump:分析最后聚类的输出结果,对应的源文件是org.apache.mahout.utils.clustering.ClusterDumper.java 16 17 18 命令: mahout vectordump -i /user/hadoop/file2 -o /user/hadoop/file3 19 具体每种命令如何用及参数如何选择,在命令行后面加-h或-help可以查看 20 21 22 二.数值文件向量化 23 三种数值型向量文件: 24 25 DenseVector:浮点型数组,存储所有向量,适用于存储密集型向量; 26 RandomAccessSparseVector:基于浮点数的HashMap实现,key:int,value:double,只存储向量中不为空的值,并提供随机访问。 27 SequentialAccessVector:只存储向量中不为空的值,只提供顺序访问。 28 29 30 命令:mahout org.apache.mahout.clustering.conversion.InputDriver -i inputfile -o outputfile