`
chakey
  • 浏览: 364441 次
  • 性别: Icon_minigender_1
  • 来自: 水星
社区版块
存档分类
最新评论

【1】使用mahout进行数据挖掘

阅读更多

mahout使用:

步骤一:
tar -xvf mahout-0.3.tar.gz

需要指定hadoop的路径和配置文件的路径
export HADOOP_HOME=/home/hadoopuser/hadoop-0.19.2
export HADOOP_CONF_DIR=/home/hadoopuser/hadoop-0.19.2/conf


步骤二:
通过这个命令可以查看mahout提供了哪些算法,以及如何使用
bin/mahout --help

bin/mahout kmeans --input /user/hive/warehouse/tmp_data/complex.seq   --clusters  5 --output  /home/hadoopuser/1.txt

mahout下处理的文件必须是SequenceFile格式的,所以需要把txtfile转换成sequenceFile。SequenceFile是hadoop中的一个类,允许我们向文件中写入二进制的键值对,具体介绍请看
eyjian写的http://www.hadoopor.com/viewthread.php?tid=144&highlight=sequencefile

mahout中提供了一种将指定文件下的文件转换成sequenceFile的方式。
(You may find Tika (http://lucene.apache.org/tika) helpful in converting binary documents to text.)
使用方法如下:

$MAHOUT_HOME/bin/mahout seqdirectory \
--input <PARENT DIR WHERE DOCS ARE LOCATED> --output <OUTPUT DIRECTORY> \
<-c <CHARSET NAME OF THE INPUT DOCUMENTS> {UTF-8|cp1252|ascii...}> \
<-chunk <MAX SIZE OF EACH CHUNK in Megabytes> 64> \
<-prefix <PREFIX TO ADD TO THE DOCUMENT ID>>

举个例子:
bin/mahout seqdirectory --input /hive/hadoopuser/ --output /mahout/seq/ --charset UTF-8


步骤三:
运行kmeans的简单的例子:

1:将样本数据集放到hdfs中指定文件下,应该在testdata文件夹下
$HADOOP_HOME/bin/hadoop fs -put <PATH TO DATA> testdata
例如:
bin/hadoop fs   -put /home/hadoopuser/mahout-0.3/test/synthetic_control.data  /user/hadoopuser/testdata/

2:使用kmeans算法
$HADOOP_HOME/bin/hadoop jar $MAHOUT_HOME/examples/target/mahout-examples-$MAHOUT_VERSION.job org.apache.mahout.clustering.syntheticcontrol.kmeans.Job
例如:
bin/hadoop jar /home/hadoopuser/mahout-0.3/mahout-examples-0.1.job org.apache.mahout.clustering.syntheticcontrol.kmeans.Job

3:使用canopy算法
$HADOOP_HOME/bin/hadoop jar $MAHOUT_HOME/examples/target/mahout-examples-$MAHOUT_VERSION.job org.apache.mahout.clustering.syntheticcontrol.canopy.Job
例如:
bin/hadoop jar /home/hadoopuser/mahout-0.3/mahout-examples-0.1.job org.apache.mahout.clustering.syntheticcontrol.canopy.Job

4:使用dirichlet 算法
$HADOOP_HOME/bin/hadoop jar $MAHOUT_HOME/examples/target/mahout-examples-$MAHOUT_VERSION.job org.apache.mahout.clustering.syntheticcontrol.dirichlet.Job

5:使用meanshift算法
meanshift : $HADOOP_HOME/bin/hadoop jar $MAHOUT_HOME/examples/target/mahout-examples-$MAHOUT_VERSION.job org.apache.mahout.clustering.syntheticcontrol.meanshift.Job

6:查看一下结果吧
bin/mahout vectordump --seqFile /user/hadoopuser/output/data/part-00000
这个直接把结果显示在控制台上。

可以到hdfs中去看看数据是什么样子的
上面跑的例子大多以testdata作为输入和输出文件夹名
可以使用 bin/hadoop fs -lsr 来查看所有的输出结果

KMeans 方法的输出结果在  output/points
Canopy 和 MeanShift 结果放在了 output/clustered-points

 

分享到:
评论
4 楼 inuyasha027 2013-02-15  
楼主的讲解很细致全面,
谢谢。
3 楼 di1984HIT 2013-02-14  
用这些不知道有何好处呢。。。。。
2 楼 help 2012-05-15  
[hadoop@hadoop-namenode 1 53 /usr/local/mahout-distribution-0.6/bin]$mahout vectordump --seqFile /user/hadoop/output/data/part-m-00000
MAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath.
Running on hadoop, using HADOOP_HOME=/home/hadoop/cdh3/hadoop-0.20.2-cdh3u2
HADOOP_CONF_DIR=/home/hadoop/cdh3/hadoop-0.20.2-cdh3u2/conf
MAHOUT-JOB: /usr/local/mahout-distribution-0.6/mahout-examples-0.6-job.jar
12/05/14 20:04:06 INFO vectors.VectorDumper: Sort? false
Exception in thread "main" java.lang.NullPointerException
at org.apache.mahout.utils.vectors.VectorDumper.main(VectorDumper.java:197)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:68)
at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:139)
at org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:188)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:186)




[hadoop@hadoop-namenode 1 53 /usr/local/mahout-distribution-0.6/bin]hadoop fs -cat  /user/hadoop/output/data/part-m-00000

@AZZîcŠ @=
„M7@"ô-Œ*EN6@28l"h@=éèÕ5@!Àõɯâ4@'Œ~($ "60<<;@.»dZ:@'˒:)Çz9@0n!–R½<8@$¯O
                                          3@"n¯%;2@#Èd„1@.
„M"@?mÌcñA !@<1©ûçl‹ @:ä/ƒ{J-@/…‡“Ý—ö,@,F€IQƒ+@0Ê^5?|î*@1°N¤¨ÁU)@$ÊdÂø7µ(@ OQ¬šþ'@$¯'»/ìW&@-|PHð%@0š™0¾
                         xFÜ@?Ó9Àëíú@=:’£S@?WÈK]Ìd@9‡E8ï4×8¦Â&€I@9Ñÿ.Hè§@>ºáG®{@A¾ÏAò×@?òn—Oß@9z1'@=)Û"Ðå`@A$tSŽó@@ßeýŠÚº@@Õ2a|@6záG®@<ž($
@AÔVÕϪΠ                                                                                                                                                         x@9îÿ—$t@9@ªdÂø8
        @8Ʌðoi
1 楼 langke93 2011-11-24  
不错,很全,学习了

相关推荐

Global site tag (gtag.js) - Google Analytics