生成SequenceFile

Jef*_*y04 3 hadoop vector 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
...
Run Code Online (Sandbox Code Playgroud)

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

http://flickr.com/photos/tags/100commentgroup,http://flickr.com/photos/tags/100faves,...
0,1,...
1,1,...
...
Run Code Online (Sandbox Code Playgroud)

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

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

  1. 编写SequenceFile
  2. 格式化svd矩阵分解的输入矩阵(我可以将矩阵存储在这种形式中吗?)
  3. RandomAccessSparseVector(考虑到我只列出分配给定标签的图像而不是一行中的所有图像,是否可以使用此向量表示它?)
  4. SequenceFile写
  5. SequenceFile解释

Sea*_*wen 5

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

可能是关键或价值将是Mahout Vector.知道如何写一个的东西VectorVectorWritable.这是您用来包装Vector和编写它的类SequenceFile.Writer.

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