【问题标题】:Mahout DataModel from hdfs or S3 Stream来自 hdfs 或 S3 Stream 的 Mahout DataModel
【发布时间】:2014-03-31 13:10:08
【问题描述】:

我的问题是当 Mahout 期望输入 DataModel 时,将数据从 Amazon S3 提供给 Mahout。

我正在尝试运行一个 Mahout 应用程序,它基本上只是做简单的推荐

new PearsonCorrelationSimilarity(DataModel);

只要我使用常规文件系统,我就可以让它工作,并且我可以使用以下方式从 Amazon S3 读取内容:

FileSystem fs = FileSystem.get(URI.create("s3n://mybucket"), conf);
FSDataInputStream userPreferencesFile = fs.open(new Path("path/to/my/file"));

但是我给我的是一个流,PearsonCorrelationSimilarity(DataModel) 期望的是 Mahout dataModel,它应该是用文件备份的。

  1. 我可以让推荐器在本地 fs 上工作。
  2. 我可以读取 hdfs 或 S3。
  3. 我不知道如何将 hdfs 流转换成可以输入 dataModel 的东西。

我认为这背后有一些我看不到的非常简单的东西,因为我对 Java 非常缺乏经验。

【问题讨论】:

    标签: amazon-s3 mahout


    【解决方案1】:

    Mahout 的 DataModel 是一些更具体的数据模型的抽象类:

    • 内存中 GenericDataModel
    • FileDataModel - 从文件中读取数据并将结果存储在内存中(在 GenericDataModel 中)
    • JDBCDataModel - 用于通过 JDBC 访问的数据(即表单 DB)。例如 MySQLJDBCDataModel
    • 另一种数据模型(例如 mongoDB)

    所以你需要指定更具体的数据模型。像这样的:

    ...
    DataModel dataModel = new FileDataModel(new File("path/to/my/file"));
    PearsonCorrelationSimilarity(dataModel);
    ...
    

    更多详情在这里:http://mahout.apache.org/users/recommender/recommender-documentation.html

    编辑:

    您不能像从普通文件系统中一样从分布式 hdfs 中读取。如果您想使用 hdfs(和 hadoop),您必须使用 hadoop 的 I/O 并使用映射器、reducers 和 mahout 的导入来创建 hadoop 的作业。运行 mahout 推荐器将如下所示:

    ~$ hadoop fs -put data_dir
    ~$ hadoop jar $MAHOUT_HOME/mahout-core-0.8-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -s SIMILARITY_COSINE --input data_dir --output output_dir 
    

    您可以覆盖默认的 org.apache.mahout.cf.taste.hadoop.item.RecommenderJob(或 org.apache.mahout.cf.taste.hadoop.pseudo.RecommenderJob 进行伪分布计算)以使用自定义映射器和化简器。

    这里是 RecommenderJob 的源代码示例:http://grepcode.com/file/repo1.maven.org/maven2/org.apache.mahout/mahout-core/0.6/org/apache/mahout/cf/taste/hadoop/item/RecommenderJob.java

    【讨论】:

    • 谢谢。我可能没有那么准确地表达这个问题。我确实知道需要指定 dataModel ,例如personCorrelationSimilarity 需要 FileDataModel。对我来说,根本问题是我无法弄清楚如何从 hdfs 输入流中制作 FileDataModel。如前所述,我可以使其与可以打开实际文件的本地文件系统一起使用。特别感谢文档链接 - 我在谷歌搜索时设法避免了这种情况。
    • 不客气。我更新了关于 hdfs 的帖子,希望它能更准确地解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多