生成SequenceFile

时间:2011-08-15 06:48:48

标签: vector hadoop mahout

给定以下格式的数据(tag_uri image_uri image_uri image_uri ...),我需要将它们转换为Hadoop SequenceFile格式,以便Mahout进一步处理(例如聚类)

http://flickr.com/photos/tags/100commentgroup http://flickr.com/photos/34254318@N06/4019040356 http://flickr.com/photos/46857830@N03/5651576112
http://flickr.com/photos/tags/100faves http://flickr.com/photos/21207178@N07/5441742937
...

在此之前,我将输入转换为csv(或arff),如下所示

http://flickr.com/photos/tags/100commentgroup,http://flickr.com/photos/tags/100faves,...
0,1,...
1,1,...
...

每行描述一个标签。然后将arff文件转换为mahout使用的矢量文件以供进一步处理。我试图跳过arff生成部分,然后生成sequenceFile。如果我没有弄错,要将我的数据表示为sequenceFile,我需要将$ tag_uri作为键存储每行数据,然后将$ image_vector作为值存储。这样做的正确方法是什么(如果可能的话,我可以将每行的tag_url包含在序列文件中吗?)

我找到的一些参考文献,但不确定它们是否相关:

  1. Writing a SequenceFile
  2. Formatting input matrix for svd matrix factorization(我可以将此矩阵存储在此表单中吗?)
  3. RandomAccessSparseVector(考虑到我只列出使用给定标签分配的图像而不是一行中的所有图像,是否可以使用此向量表示它?)
  4. SequenceFile write
  5. SequenceFile explanation

1 个答案:

答案 0 :(得分:5)

您只需要SequenceFile.Writer,您的链接#4中会对此进行说明。这使您可以将键值对写入文件。当然,关键和价值取决于您的用例。对于聚类与矩阵分解与协同过滤相比,它完全不相同。没有一种 SequenceFile格式。

可能是关键或值为Mahout Vector。知道如何撰写Vector的事情是VectorWritable。这是用于包装Vector并使用SequenceFile.Writer编写的类。

你需要查看将消耗它的工作,以确保你传递它所期望的。例如,对于群集,我认为键被忽略,值为Vector