给定以下格式的数据(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包含在序列文件中吗?)
我找到的一些参考文献,但不确定它们是否相关:
答案 0 :(得分:5)
您只需要SequenceFile.Writer
,您的链接#4中会对此进行说明。这使您可以将键值对写入文件。当然,关键和价值取决于您的用例。对于聚类与矩阵分解与协同过滤相比,它完全不相同。没有一种 SequenceFile
格式。
可能是关键或值为Mahout Vector
。知道如何撰写Vector
的事情是VectorWritable
。这是用于包装Vector
并使用SequenceFile.Writer
编写的类。
你需要查看将消耗它的工作,以确保你传递它所期望的。例如,对于群集,我认为键被忽略,值为Vector
。