1、采用两个MapReduce运算串联来实现 Pik= Mij*Njk

第一步:

Map函数:将每个矩阵运算mij传给键值对(j,(M,i,mij)),将每个矩阵元素njk传给键值对(j,(N,k,njk))

Reduce函数:对每个键j,检查与之关联的值的列表。对每个来自M的值(M,i,mij)和来自N的值(N,k,njk),产生元组(i,k,mijnjk)。对于键j,Reduce函数输出满足(i,k,mijnjk)形式的所有元组列表作为值

第二步:

Map函数:将上面的Reduce函数的输出结果传递给改Map函数,形式为(j,[(i1,k1,v1),(i2,k2,v2),...(ip,kp,vp)]),基于这些元素可以产生p个键值对((i1,k1),v1),((i2,k2),v2),...((ip,kp),vp)

Reduce函数:对每个键值(i,k),结算与此键关联的所有值的和,结果记为((i,k),v)

2、单步实现

Map函数:对应矩阵M中的每个元素mij,产生一系列键值对((i,k),(M,j,mij)),其中k=1,2,...,直到矩阵N的列数。同样对于矩阵N中的每个元素Njk,产生一系列键值对((i,k),(N,j,njk)),其中i=1,2,....直到M的行数

Reduce函数:每个键值(i,k)相关联的值(M,j,mij)及(N,j,njk)将组成一个表,其中j对应所有可能的值。Reduce函数必须对每个j将具有相同j值的(M,j,mij)及(N,j,njk)接通。一个简单的方法是将所有(M,j,mij)及(N,j,njk)分别按照j值排序并放到不同的列表中。将两个列表的第j个元组中的mij和njk抽出来相乘,然后将这些积相加,最后与键(i,k)组对作为Reduce函数的输出结果

基于MapReduce的矩阵乘法运算的更多相关文章

  1. 基于MapReduce的矩阵乘法

    参考:http://blog.csdn.net/xyilu/article/details/9066973文章 文字未得及得总结,明天再写文字,先贴代码 package matrix; import ...

  2. MapReduce实现矩阵乘法

    简单回想一下矩阵乘法: 矩阵乘法要求左矩阵的列数与右矩阵的行数相等.m×n的矩阵A,与n×p的矩阵B相乘,结果为m×p的矩阵C.具体内容能够查看:矩阵乘法. 为了方便描写叙述,先进行如果: 矩阵A的行 ...

  3. 基于OpenMP的矩阵乘法实现及效率提升分析

    一.  矩阵乘法串行实现 例子选择两个1024*1024的矩阵相乘,根据矩阵乘法运算得到运算结果.其中,两个矩阵中的数为double类型,初值由随机数函数产生.代码如下: #include <i ...

  4. 基于mapreduce的大规模连通图寻找算法

    基于mapreduce的大规模连通图寻找算法 当我们想要知道哪些账号是一个人的时候往往可以通过业务得到两个账号之间有联系,但是这种联系如何传播呢? 问题 已知每个账号之间的联系 如: A B B C ...

  5. OpenCV中的矩阵乘法运算

    转载:http://blog.csdn.net/tangwei2014 OpenCV中矩阵乘法运算 1. Mat*Mat: 第一个矩阵的列数必须等于第二个矩阵的行数. [0, 1, 2, 3;     ...

  6. Python+MapReduce实现矩阵相乘

    算法原理 map阶段 在map阶段,需要做的是进行数据准备.把来自矩阵A的元素aij,标识成p条<key, value>的形式,key="i,k",(其中k=1,2,. ...

  7. 【甘道夫】MapReduce实现矩阵乘法--实现代码

    之前写了一篇分析MapReduce实现矩阵乘法算法的文章: [甘道夫]Mapreduce实现矩阵乘法的算法思路 为了让大家更直观的了解程序运行,今天编写了实现代码供大家參考. 编程环境: java v ...

  8. MapReduce教程(一)基于MapReduce框架开发<转>

    1 MapReduce编程 1.1 MapReduce简介 MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算,用于解决海量数据的计算问题. MapReduce分成了两个部分: ...

  9. 基于MapReduce的贝叶斯网络算法研究参考文献

    原文链接(系列):http://blog.csdn.net/XuanZuoNuo/article/details/10472219 论文: 加速贝叶斯网络:Accelerating Bayesian ...

随机推荐

  1. Python3 学习第六弹: 迭代器与生成器

    1> 迭代器 迭代的意思类似递归一般,不断地对一个对象做重复的操作.来看个例子: class Fibs: def __init__(self): self.last = self.now = 1 ...

  2. 基础组件_Window(窗口)

    窗口控件是一个浮动和可拖拽的面板可以用作应用程序窗口.默认情况下,窗口可以移动,调整大小和关闭.它的内容也可以被定义为静态html或要么通过ajax动态加载. 1. 通过标签创建窗口

  3. 51nod1379 索函数

    果断打表找规律.然后看得出来是2^k-1之后又不知道怎么求出k有什么卵用... http://blog.csdn.net/guhaiteng/article/details/52094210 %%%% ...

  4. 点滴积累【SQL Server】---SQL语句操作约束

    说明: --主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. --唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个 ...

  5. POJ 2084 Game of Connections

    卡特兰数. #include<stdio.h> #include<string.h> ; ; void mul(__int64 a[],int len,int b) { int ...

  6. Dataguard常用命令汇总

    ----标准DataGuard参数设置------------------------------alter system set log_archive_dest_2='SERVICE=ta_std ...

  7. 两天三场Java实习生面试总结

    Java 关键字(如abstract)[详解] String[相关面试题] String.StringBuffer.StringBuilder区别 String中有没有使一个字符串反转的方法 线程的实 ...

  8. Solr部署准备

    ---恢复内容开始--- 1.配置安装JDK1.7以上的版本 2.下载solr包 http://archive.apache.org/dist/lucene/solr/4.9.0/ 3.安装web容器 ...

  9. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.5.安装Grid,创建ASM磁盘组空间不足

    因之前分区时,分区的Last cylinder的值选了“1”,导致创建磁盘组空间不足.解决办法是先删除分区,重新创建分区并删除ASM磁盘,然后重建ASM磁盘 1. 先删除分区,重新创建分区: 1)查询 ...

  10. shell 中数学计算总结

    shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法,以后用到的时候可以来看,呵呵.   1.错误方法举例   a)   var=1+1   echo $var  ...