当前位置:  开发笔记 > 编程语言 > 正文

有人可以在C#中解释map-reduce吗?

如何解决《有人可以在C#中解释map-reduce吗?》经验,为你挑选了2个好方法。

任何人都可以解释map-reduce的概念,特别是在Mongo中?

我也使用C#,因此该领域的任何细节也都很有用.



1> Ian Mercer..:

理解来自C#和LINQ的Map-Reduce的一种方法是将其视为一个SelectMany()后跟GroupBy()一个Aggregate()操作.

在一个SelectMany()你正在投射一个序列,但每个元素可以成为多个元素.这相当于emit地图操作中使用多个语句.map操作也可以选择不调用emit,就像Where()在你的SelectMany()操作中有一个子句一样.

在a中,GroupBy()您正在使用相同的键收集元素,这是Map-Reduce对您从地图操作发出的键值所做的操作.

Aggregate()reduce步骤中,您将获取与每个组键关联的集合,并以某种方式组合它们以为每个键生成一个结果.通常,这种组合只是在地图步骤中为每个键添加一个"1"值输出,但有时它更复杂.

MongoDB map-reduce的一个重要警告是reduce操作必须接受并输出相同的数据类型,因为它可能会重复应用于分组数据的部分集合.如果传递了一个值数组,则不要简单地使用它的长度,因为它可能是早期reduce操作的部分结果.



2> Gates VP..:

这里是开始使用Mongo中的Map Reduce的地方.这本食谱有几个例子,我会关注这 两个.

我喜欢在"数据仓库作业"或​​"汇总"的上下文中考虑map-reduced.您基本上是在获取详细数据并"汇总"该数据的较小版本.

在SQL中,您通常会使用sum()and avg()group by.在MongoDB中,您可以使用Map Reduce执行此操作.Map Reduce的基本前提是你有两个功能.

第一个函数(map)基本上是一个巨大的for循环,它运行在你的数据上并"发出"某些.第二个函数(reduce)是对所有发出数据的巨大循环.地图上写着"嘿,这是你想要总结的数据",而减少表示"嘿,这个值的数组减少到这个单一值"

map-reduce的输出可以有多种形式(通常是平面文件).在MongoDB中,输出实际上是一个新集合.

C#细节

在MongoDB中,所有Map Reduce都在javascript引擎内执行.所以map和reduce函数都是用javascript编写的.各种驱动程序将允许您构建javascript并发出命令,但是,这不是我通常这样做的方式.

运行Map Reduce作业的首选方法是将JS编译成文件然后mongo map_reduce.js.通常,您将在服务器上的某个位置执行此操作作为cron作业或计划任务.

为什么?

好吧,map reduce不是"实时",特别是对于大数据集.它真的设计为批量使用.不要误解我的意思,你可以从你的代码中调用它,但通常,你不希望用户启动map reduce工作.相反,您希望安排这些作业,并希望用户查询结果:)

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有