我尝试使用 mahout 部署 20 个新闻组示例,它似乎工作正常。出于好奇,我想深入研究模型统计信息,
例如:bayes-model 目录包含以下子目录,
培训师-tfIdf 培训师-thetaNormalizer 培训师-权重
其中包含部分 0000 文件。我想阅读文件的内容以便更好地理解,cat 命令似乎不起作用,它打印了一些垃圾。
任何帮助表示赞赏。
谢谢
“part-00000”文件由 Hadoop 创建,采用 HadoopSequenceFile
格式,包含特定于 Mahout 的值。您不能将它们作为文本文件打开,不。您可以SequenceFileDumper
在 Mahout 中找到实用程序类,它会尝试将内容作为文本输出到标准输出。
至于这些值是从什么开始的,它们是 Mahout 执行的基于 Hadoop 的多阶段计算的中间结果。您可以阅读代码以更好地了解它们是什么。例如,“tfidf”目录包含与词频相关的中间计算。
您可以使用 hadoop 的 filesystem -text 选项读取 part-0000 文件。只需进入 hadoop 目录并输入以下内容
`bin/hadoop dfs -text /Path-to-part-file/part-m-00000`
part-m-00000 将被打印到 STDOUT。
如果它给您一个错误,您可能需要将 HADOOP_CLASSPATH 变量添加到您的路径中。例如,如果运行后它给你
文本:java.io.IOException:WritableName 无法加载类:org.apache.mahout.math.VectorWritable
然后将对应的类添加到 HADOOP_CLASSPATH 变量中
export HADOOP_CLASSPATH=/src/mahout/trunk/math/target/mahout-math-0.6-SNAPSHOT.jar
这对我有用;)
为了读取 part-00000(序列文件),您需要使用“seqdumper”实用程序。这是我用于实验的示例:
MAHOUT_HOME$:bin/mahout seqdumper -s ~/clustering/experiments-v1/t14/tfidf-vectors/part-r-00000 -o ~/vectors-v2-1010
-s 是要转换为纯文本的序列文件
-o 是输出文件