mongodb - MapReduce 和 SQL GROUP BY

标签 mongodb hadoop group-by mapreduce

我一直在尝试了解 MongoDB 中 MapReduce 的基础知识,甚至在实现它之后,我也不确定它与 SQL 的 GROUP BY 甚至 Mongo 自己的 GROUP BY 究竟有何不同。在 SQL Server 中,可以通过流或哈希聚合来完成 GROUP BY。 MapReduce不是类似于哈希聚合,只是在大量的服务器之上吗?

我在一些地方读到 MR for MongoDB 将作为后台进程运行,因为它是一个“繁重的操作”。鉴于数据是分片的,GROUP BY 不会同样“重”吗?也就是说,我只是想比较那些可以作为 MR 作业或使用 GROUP BY 查询来实现的操作类型。

有没有什么GROUP BY做不到,只有MR可以做的?

此外,Hadoop 似乎非常擅长 MR(这只是我读到的内容..我从未在 Hadoop 上工作过)。 Hadoop 的 MR 与 Mongo 有何不同?

我很困惑。请帮助或指导我阅读解释 MapReduce 需求的优秀教程。

最佳答案

使用 MR 得到的是速度。 GROUP BY 在 SQL 中是一个缓慢的操作,而 MR 在 MongoDB 中更慢。但是您所做的是创建新集合并实时迭代它们。当您拥有大量数据并希望能够对其进行实时迭代时,这非常有用。

在我正在处理的项目中,有一个 Python 脚本在后台运行(cron 作业),每天执行一次不同的 map/reduce。我们没有使用 SQL group by 迭代大型表,而是使用 MR 迭代一次,然后快速迭代创建的新集合。

我没有 Hadoop 经验。所以很抱歉,我不能在那里填写你。

教程: http://www.mongovue.com/2010/11/03/yet-another-mongodb-map-reduce-tutorial/

编辑:

在这里您可能会看到 SQL 查询到 MongoDB Map/Reduce 的完整转换: GROUP BY to MongoDB Map/Reduce 它取自:http://rickosborne.org/download/SQL-to-MongoDB.pdf

关于mongodb - MapReduce 和 SQL GROUP BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11358390/

相关文章:

javascript - 如何将解析为 MM/DD/YYYY 的 unix 时间转换为 DD/MM/YYYY unix 日期

hadoop - 在巨大的字符串列表上进行文本挖掘

hadoop - 在HDFS上,我想显示以ORC格式存储的配置单元表的普通文本

r - 以group_by方式统计事件(R)

r - 如何通过对 R 中的条目进行分组来创建时间序列?

json - Mongoimport JSON文件错误: "BSON representation of supplied JSON array is too large: code FailedToParse: Date expecting integer milliseconds"

javascript - 使用 Sails.js 在 MongoDb 中保存 JSON

javascript - 如何在 meteor 中响应式聚合 mongodb

hadoop - 从 Hadoop Job Tracker Web 界面访问 EMR 任务日志

mysql - 从两列中查找重复项,但显示所有行 MySQL