我看各专业精英都有方法,作为计算机方向,我也忍不住出一计——
MapReduce 其实就是把庞大数据分为多块小一点的数据(Map),然后再把每个小块数据的结果总结起来(Reduce),就得到了结果。
![]()
就这个问题来说,我把一袋米分给 10 个人,让他们每人回头告诉我分到的那一份是奇数还是偶数,根据:
知道这 10 个人分到米粒的奇偶,我就知道整袋米的奇偶,这就是一次 MapReduce。
当然这 10 个人也不用自己逐一去数米,他们每个人也可以把分到手的米粒分给其他 10 个人,要那 10 个人给出分到米粒的奇偶。
下一层的 10x10=100 个人也不用自己逐一去数米,分给他他们的下家。
......
最后米粒肯定会分到某一层的时候 10 个人只有分到 1 粒米(奇数)或者 0 粒米(偶数)的时候,那时候就可以反向给上家汇报分到他们的奇偶性。
上家继续向上汇报奇偶性。
......
最后奇偶性汇报到我这里,我就可以推导出整袋米粒的奇偶性了。
你看,整个过程中并没有逐一数米,分米的时候也不用绝对平均,差不多平均别累着某些人就好,就算分米不平均也不影响结果正确性。
就和《三体》里的秦始皇人肉计算机一样,只要人够多,就搞定了:-)
![]()