【问题标题】:Generating a SequenceFile生成序列文件
【发布时间】:2011-10-27 02:24:36
【问题描述】:

给定以下格式的数据(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。如果我没记错的话,为了将我的数据表示为一个序列文件,我需要以 $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

【问题讨论】:

    标签: vector hadoop mahout


    【解决方案1】:

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

    键或值可能是 Mahout Vector。知道如何写Vector 的是VectorWritable。这是您用来包装Vector 并使用SequenceFile.Writer 编写的类。

    您需要查看将使用它的作业,以确保您通过了它的预期。例如,对于集群,我认为键被忽略,值是Vector

    【讨论】:

    • 嘿@sean,你是上周在邮件列表中回复我的人吗? :) 感谢您的回复。
    猜你喜欢
    • 2021-09-07
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 2022-11-05
    相关资源
    最近更新 更多