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

本文提供了MapReduce实现矩阵乘法的详细代码,包括驱动类MMDriver、Map类MMMapper和Reduce类MMReducer。通过Java编程,演示如何在Hadoop 2.2.0环境下处理矩阵数据并进行乘法运算。
摘要由CSDN通过智能技术生成

之前写了一篇分析MapReduce实现矩阵乘法算法的文章:

【甘道夫】Mapreduce实现矩阵乘法的算法思路

为了让大家更直观的了解程序执行,今天编写了实现代码供大家参考。


编程环境:

java version "1.7.0_40"

Eclipse Kepler

Windows7 x64

Ubuntu 12.04 LTS

Hadoop2.2.0

Vmware 9.0.0 build-812388


输入数据:

A矩阵存放地址:hdfs://singlehadoop:8020/workspace/dataguru/hadoopdev/week09/matrixmultiply/matrixA/matrixa

A矩阵内容:
3 4 6
4 0 8

matrixa文件已处理为(x,y,value)格式:

0 0 3

0 1 4

0 2 6

1 0 4

1 1 0

1 2 8



B矩阵存放地址:hdfs://singlehadoop:8020/workspace/dataguru/hadoopdev/week09/matrixmultiply/matrixB/matrixb

B矩阵内容:
2 3
3 0
4 1

matrixb文件已处理为(x,y,value)格式:

0 0 2

0 1 3

1 0 3

1 1 0

2 0 4

2 1 1


实现代码:

一共三个类:

  • 驱动类MMDriver
  • Map类MMMapper
  • Reduce类MMReducer

大家可根据个人习惯合并成一个类使用。


package dataguru.matrixmultiply;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
i
好的,首先我们需要定义一个名为`Role`的父类作为角色的通用模板,然后创建两个子类`Mage`(法师)和`Warrior`(战士),它们都继承自`Role`。 ```java // 定义Role父类 public abstract class Role { protected String name; public Role(String name) { this.name = name; } // 定义一个抽象的toString方法,用于展示基础信息 @Override public abstract String toString(); } // 定义Mage子类 public class Mage extends Role { public Mage(String name) { super(name); } @Override public String toString() { return "我是魔法师:" + name; } } // 定义Warrior子类 public class Warrior extends Role { public Warrior(String name) { super(name); } @Override public String toString() { return "我是战士:" + name; } } ``` 接下来,我们替换`Role`类中的`showInfo`方法为`toString`方法,因为Java里没有直接的`showInfo`方法,但在实际项目中,`toString`方法可以起到类似的作用: ```java public class Role { // ...其他部分... // 替换showInfo为toString @Override public String toString() { return getClass().getSimpleName() + ": " + name; } } ``` 最后,在测试类中,我们可以创建法师和战士实例,并进行对战: ```java public class BattleTest { public static void main(String[] args) { Mage mage = new Mage("阿尔萨斯"); Warrior warrior = new Warrior("甘道夫"); System.out.println(mage); // 输出:Mage: 阿尔萨斯 System.out.println(warrior); // 输出:Warrior: 甘道夫 // 这里只是一个示例,实际上你可能需要设计更复杂的战斗逻辑 System.out.println("对决结果:" + mage.toString() + " vs " + warrior.toString()); // 输出:对决结果:Mage: 阿尔萨斯 vs Warrior: 甘道夫 } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值