0

我在 hadoop 之上成功运行了 Apache mahout 的并行 FPgroth 算法。但是生成的输出文本文件不可读,如下所示

SEQorg.apache.hadoop.io.TextDorg.apache.mahout.fpm.pfpgrowth.convertors.string.TopKStringPatterns������3G9��y'����e������1����2� ����������1����������5�1������������4�1������������ 1�4227������������3�1������������1�3476����������t�1�1340������ ����h�1�5795���������N�1�2701���������K�1�3610���������@�1� 第2106章……

使用相同的输入文件运行 RecommenderJob 和 ItemSimilarityJob 会生成正确的输出文件。

有任何想法吗?

4

1 回答 1

2

这些输出文件是序列文件,而不是文本文件。它们包含类型的键/值对<Text, TopKStrinPatterns>

您可以使用 fs shell 命令以及 -text 和 -libjars 让 hadoop 读取序列文件并输出这些对象的文本版本:

hadoop fs -libjars /path/to/mahout/lib.jar -text /path/to/hdfs/output/part*

如果您希望这些文件是文本而不是序列,那么您需要修改运行作业的驱动程序,并将作业更改为使用TextOutputFormat,而不是SequenceFileOutputFormat

// job.setOutputFormat(SequenceFileOutputFormat.class);
job.setOutputFormat(TextOutputFormat.class);
于 2012-04-05T10:26:00.393 回答