【发布时间】:2011-12-28 10:51:37
【问题描述】:
我尝试使用 mahout 部署 20 个新闻组示例,它似乎工作正常。出于好奇,我想深入挖掘模型统计数据,
例如:bayes-model目录包含以下子目录,
trainer-tfIdf trainer-thetaNormalizer trainer-weights
其中包含部分 0000 文件。我想阅读文件的内容以便更好地理解,cat 命令似乎不起作用,它打印了一些垃圾。
感谢任何帮助。
谢谢
【问题讨论】:
我尝试使用 mahout 部署 20 个新闻组示例,它似乎工作正常。出于好奇,我想深入挖掘模型统计数据,
例如:bayes-model目录包含以下子目录,
trainer-tfIdf trainer-thetaNormalizer trainer-weights
其中包含部分 0000 文件。我想阅读文件的内容以便更好地理解,cat 命令似乎不起作用,它打印了一些垃圾。
感谢任何帮助。
谢谢
【问题讨论】:
“part-00000”文件由 Hadoop 创建,采用 Hadoop 的SequenceFile 格式,包含特定于 Mahout 的值。您不能将它们作为文本文件打开,不。您可以在 Mahout 中找到实用程序类 SequenceFileDumper,它会尝试将内容作为文本输出到标准输出。
至于这些值的起点,它们是 Mahout 执行的基于 Hadoop 的多阶段计算的中间结果。您可以阅读代码以更好地了解它们是什么。例如,“tfidf”目录包含与词频相关的中间计算。
【讨论】:
您可以使用 hadoop 的文件系统 -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 是输出文件
【讨论】: