【问题标题】:what should be the correct flow of data in hadoop and mahout?hadoop和mahout中正确的数据流应该是什么?
【发布时间】:2014-12-29 18:35:10
【问题描述】:

我正在使用 hadoop、hive 和 mahout 技术。 我正在使用 hadoop 中的 mapreduce 作业处理一些数据,以便在 mahout 中进行推荐。 我想知道上述模型的正确工作流程,即当hadoop处理数据并将其存储在HDFS中时,mahout将如何使用这些数据以及mahout将如何获取这些数据以及mahout处理数据后,mahout会将这个推荐放在哪里数据? 注意:我正在使用 hadoop 处理数据,而我的同事正在另一台机器上使用 mahout。 希望你能正确回答我的问题。

【问题讨论】:

  • mahout 中有哪些不同的可能输入格式?

标签: hadoop hive mahout mahout-recommender


【解决方案1】:

如果您想在 mahout 中从 hadoop hdfs 获取输入,那么您必须执行以下步骤-

首先通过命令将输入​​文件复制到hdfs

hadoop dfs -copyFromLocal input /

然后运行 ​​mahout 命令进行推荐,该命令从 hdfs 获取输入并将输出保存在 hdfs 中

假设您的 JAVA_HOME 设置正确并且 Mahout 安装正确,我们就可以配置我们的语法了。输入以下命令:

$ mahout recommenditembased -s SIMILARITY_LOGLIKELIHOOD -i hdfs://localhost:9000/inputfile -o hdfs://localhost:9000/output --numRecommendations 25

运行该命令将执行一系列作业,其最终结果将是一个输出文件,存放在命令语法中指定的目录中。输出文件将包含两列:userID 以及 itemID 和分数的数组。

【讨论】:

  • 谢谢kishore,你的回答对我有用,我刚刚处理过数据,现在处理过的数据中的目录可以作为输入目录,我只是从hdfs复制文件并将其放入我的本地系统,然后对于 mahout 推荐,我从本地系统中选择文件,例如“DataModel dm = new FileDataModel(new File(/home/oodles/myfile.csv))”
【解决方案2】:

这完全取决于 Mahout 的运行方式。 Mahout 可以在本地模式或分布式模式下运行。我们需要设置“MAHOUT_LOCAL”变量。

  MAHOUT_LOCAL       set to anything other than an empty string to force
                      mahout to run locally even if
                      HADOOP_CONF_DIR and HADOOP_HOME are set

例如,如果我们不配置 MAHOUT_LOCAL 并尝试执行任何 Mahout 算法,那么您可以在控制台中看到以下内容。

MAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath.
Running on hadoop, 

在分布式模式下运行时,Mahout 将所有路径视为 HDFS 路径。因此,即使 Mahout 处理了您的数据,最终输出也会存储在 HDFS 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 2011-06-07
    • 2013-03-18
    相关资源
    最近更新 更多