• 用C#感受MongoDB MapReduce之魅力 转


    MapReduce这个名词随着hadoop的用户的增多,越来越被人关注。MapReduce可谓MongoDB之中的亮点,我也想深入了解MapReduce,加上MongoDB操作简单,所以就选择了它。MapReduce可以把问题划分为多个不同部分并分发到不同服务器并行处理问题,每台服务器都把分配给自己的一部分问题处理完毕后,把结果返回给主服务器,主服务器汇总结果,最终完成问题的处理。

    Map首先将文档映射到集合并操作文档,这一步可能产生多个键和多个值或者什么也没有(文档中要处理的值为空)。而后按照键分组,并将产生的值组成列表放到对应的键中。Reduce则把列表中的值化简为一个值。这个值被返回,而后继续按键分组,进行化简,直到每个键在列表中只有一个值为止,这个值也就是最终结果。

    在MongoDB中,需要用JavaScript写一个Map()函数和一个Reduce()函数。Map函数使用emit函数返回要处理的值。Emit会传给redcuce函数一个键和一个值。Reduce 函数接收两个参数,第一个是key,接收emit返回的键;第二个是values数组,也就是emit返回的值,它有一个或者多个对应于键的文档组成。

    下面写一个实例,用实例感悟一下MapReduce。

    首先建一实体类,

     

    接下来连接数据库,

     

    插入几条测试记录,

     

    下面就是本例的核心,两个JavaScript方法,主要用于统计不同的单词在集合中出现的次数,

     

    用以下代码可以遍历mapreduce返回的结果

     

    执行结果

     

    本例mapreduce处理结果的方法可能类似下图,执行过程可能不太一样,但是思想就是这么个思想,

     

    运行计算时,mongodb会产生几个中间结果,结束后会被自动删除,如图

     

    可以再写一对JavaScript函数,统计下单词出现在哪个记录里,

     

    执行结果如下(虚线下面的部分)

     

  • 相关阅读:
    Oracle Yum源
    Linux Centos7使用ping命令ping不通网络的解决方案
    Oracle 11G DBMS包和类型参考
    (转载)linux下Yum的$releasever和$basearch的取值
    IDEA 配置Tomcat乱码解决方法
    C# .NET Framework 3.5 下 Thread 与 Semaphore 的简单例子
    C# .NET Framework 3.5 下 Task 与 EventWaitHandle 的简单例子
    Notepad ++ 去//注释的方法
    Clip Studio Paint(优动漫)如何提取线稿?
    C# .NET Framework 3.5 下 Task 与 Semaphore 的简单例子
  • 原文地址:https://www.cnblogs.com/zqn518/p/3310272.html
Copyright © 2020-2023  润新知