基于MapReduce的矩阵乘法运算

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函数的输出结果

转载于:https://www.cnblogs.com/liutoutou/p/3498956.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值