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. 《c程序设计语言》读书笔记--子函数原型和声明的形参

    #include <stdio.h> #define Num 20 int power(int base,int n) { int p = 1; int i; for(i = 0;i &l ...

  2. boot.img的分析

    1 boot.img  boot.img是由文件头信息,内核数据以及文件系统数据组成,它们之间非页面对齐部分用0填充 文件头信息的具体结构可以在system/core/mkbootimg/bootim ...

  3. [HDOJ1015]Safecracker(DFS, 组合数学)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1015 这都能过…… #include <algorithm> #include <i ...

  4. linux学习之centos(二):虚拟网络三种连接方式和SecureCRT的使用

    ---操作环境--- 虚拟机版本:VMware Workstation_10.0.3 Linux系统版本:CentOS_6.5(64位) 物理机系统版本:win10  一.虚拟网络三种连接方式 当在V ...

  5. 【Python】如何安装easy_install?

    [Python]如何安装easy_install? http://jingyan.baidu.com/article/b907e627e78fe146e7891c25.html easy_instal ...

  6. windows平台时间函数性能比较QueryPerformanceCounter,GetTickCount,ftime,time,GetLocalTime,GetSystemTimeAsFileTime

    http://gmd20.blog.163.com/blog/static/168439232012113111759514/ 执行 10000000 次, 耗时 2258,369 微秒     Qu ...

  7. Android实现自定义字体

    介绍 最近在看开源项目的时候,发现里面涉及到了自定义字体,虽然自己目前还用不到,但是动手demo笔记记录一下还是有必要的,没准哪天需要到这个功能. 原理 1.其实实现起来非常简单,主要是用到了Type ...

  8. Asp.Net判断字符是否为汉字的方法大全

    判断一个字符是不是汉字通常有三种方法: 第一种用 ASCII 码判断,缺点:把全角逗号“,”当汉字处理 第二种用汉字的 UNICODE 编码范围判 断, 第三种用正则表达式判断 1.用ASCII码判断 ...

  9. CI在CentOS中的部署与实践LNMP

    1. 平台:lnmp CentOS6.4 (64bit) nginx1.2.4+php5.5.7配置过程中遇到的问题与处理方式: 1. 404错误: 原因:nginx中的配置请求路径的问题 2. 40 ...

  10. Java之路

    Java程序员 高级特性 反射.泛型.注释符.自动装箱和拆箱.枚举类.可变参数.可变返回类型.增强循环.静态导入 核心编程 IO.多线程.实体类.集合类.正则表达式.XML和属性文件 图形编程 AWT ...