最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 矩陣乘法的mapreduce程序?qū)崿F(xiàn)

 更新時(shí)間:2017年06月07日 14:49:09   作者:南尋  
這篇文章主要介紹了java 矩陣乘法的mapreduce程序?qū)崿F(xiàn)的相關(guān)資料,需要的朋友可以參考下

java 矩陣乘法的mapreduce程序?qū)崿F(xiàn)

map函數(shù):對于矩陣M中的每個(gè)元素m(ij),產(chǎn)生一系列的key-value對<(i,k),(M,j,m(ij))>

其中k=1,2.....知道矩陣N的總列數(shù);對于矩陣N中的每個(gè)元素n(jk),產(chǎn)生一系列的key-value對<(i , k) , (N , j ,n(jk)>, 其中i=1,2.......直到i=1,2.......直到矩陣M的總列數(shù)。

map

package com.cb.matrix;

import static org.mockito.Matchers.intThat;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.FileSplit;
import org.apache.hadoop.mapreduce.Mapper;

import com.sun.org.apache.bcel.internal.generic.NEW;


public class MatrixMapper extends Mapper<Object, Text, Text, Text> {
 private Text map_key=new Text();
 private Text map_value= new Text();
 private int columnN;
 private int rowM;
 /**
 * 執(zhí)行map()函數(shù)前先由conf.get()得到main函數(shù)中提供的必要變量
 * 也就是從輸入文件名中得到的矩陣維度信息
 */
 
 @Override
 protected void setup(Mapper<Object, Text, Text, Text>.Context context) throws IOException, InterruptedException {
 // TODO Auto-generated method stub
 Configuration config=context.getConfiguration();
 columnN=Integer.parseInt(config.get("columnN"));
 rowM =Integer.parseInt(config.get("rowM"));
 }
 
 @Override
 protected void map(Object key, Text value, Mapper<Object, Text, Text, Text>.Context context)
  throws IOException, InterruptedException {
 // TODO Auto-generated method stub
 //得到文件名,從而區(qū)分輸入矩陣M和N
 FileSplit fileSplit=(FileSplit)context.getInputSplit();
 String fileName=fileSplit.getPath().getName();
 
 if (fileName.contains("M")) {
  String[] tuple =value.toString().split(",");
  int i =Integer.parseInt(tuple[0]);
  String[] tuples=tuple[1].split("\t");
  int j=Integer.parseInt(tuples[0]);
  int Mij=Integer.parseInt(tuples[1]);
  for(int k=1;k<columnN+1;k++){
  map_key.set(i+","+k);
  map_value.set("M"+","+j+","+Mij);
  context.write(map_key, map_value);
  }
  
 }
 else if(fileName.contains("N")){
  String[] tuple=value.toString().split(",");
  int j=Integer.parseInt(tuple[0]);
  String[] tuples =tuple[1].split("\t");
  int k=Integer.parseInt(tuples[0]);
  int Njk=Integer.parseInt(tuples[1]);
  for(int i=1;i<rowM+1;i++){
  map_key.set(i+","+k);
  map_value.set("N"+","+j+","+Njk);
  context.write(map_key, map_value);
  }
 }
 
 }

}

reduce函數(shù):對于每個(gè)鍵(i,k)相關(guān)聯(lián)的值(M,j,m(ij))及(N,j,n(jk)),根據(jù)相同的j值將m(ij)和n(jk)分別存入不同的數(shù)組中,然后將倆者的第j個(gè)元素抽取出來分別相乘,最后相加,即可得到p(jk)的值。

reducer

package com.cb.matrix;


import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;



public class MatrixReducer extends Reducer<Text, Text, Text, Text> {
 private int sum=0;
 private int columnM;
 @Override
 protected void setup(Reducer<Text, Text, Text, Text>.Context context) throws IOException, InterruptedException {
 // TODO Auto-generated method stub
 Configuration conf =context.getConfiguration();
 columnM=Integer.parseInt(conf.get("columnM"));
 }
 @Override
 protected void reduce(Text arg0, Iterable<Text> arg1, Reducer<Text, Text, Text, Text>.Context arg2)
  throws IOException, InterruptedException {
 // TODO Auto-generated method stub
 int[] M=new int[columnM+1];
 int[] N=new int[columnM+1];
 
 for(Text val:arg1){
  String[] tuple=val.toString().split(",");
  if(tuple[0].equals("M")){
  M[Integer.parseInt(tuple[1])]=Integer.parseInt(tuple[2]);
  
  }else{
  N[Integer.parseInt(tuple[1])]=Integer.parseInt(tuple[2]);
  }
  for(int j=1;j<columnM+1;j++){
  sum+=M[j]*N[j];
  }
  arg2.write(arg0, new Text(Integer.toString(sum)));
  sum=0;
 }
 }

}

 感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Java并發(fā)之原子性 有序性 可見性及Happen Before原則

    Java并發(fā)之原子性 有序性 可見性及Happen Before原則

    一提到happens-before原則,就讓人有點(diǎn)“丈二和尚摸不著頭腦”。這個(gè)涵蓋了整個(gè)JMM中可見性原則的規(guī)則,究竟如何理解,把我個(gè)人一些理解記錄下來。下面可以和小編一起學(xué)習(xí)Java 并發(fā)四個(gè)原則
    2021-09-09
  • 教你如何使用idea管理docker

    教你如何使用idea管理docker

    其實(shí)idea也提供了docker的管理功能,比如查看容器列表,啟動容器,停止容器等,本文來看下如何管理本地的docker?daemon和遠(yuǎn)程的dockers?daemon,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • JAVA8?Stream流中的reduce()方法詳解

    JAVA8?Stream流中的reduce()方法詳解

    reduce 操作可以實(shí)現(xiàn)從Stream中生成一個(gè)值,其生成的值不是隨意的,而是根據(jù)指定的計(jì)算模型,這篇文章主要介紹了JAVA8?Stream流中的reduce()方法詳解,需要的朋友可以參考下
    2023-02-02
  • springboot+kafka中@KafkaListener動態(tài)指定多個(gè)topic問題

    springboot+kafka中@KafkaListener動態(tài)指定多個(gè)topic問題

    這篇文章主要介紹了springboot+kafka中@KafkaListener動態(tài)指定多個(gè)topic問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 劍指Offer之Java算法習(xí)題精講二叉樹專題篇上

    劍指Offer之Java算法習(xí)題精講二叉樹專題篇上

    跟著思路走,之后從簡單題入手,反復(fù)去看,做過之后可能會忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • springboot中如何配置LocalDateTime JSON返回時(shí)間戳

    springboot中如何配置LocalDateTime JSON返回時(shí)間戳

    這篇文章主要介紹了springboot中如何配置LocalDateTime JSON返回時(shí)間戳問題。具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 使用spring?security?BCryptPasswordEncoder接入系統(tǒng)

    使用spring?security?BCryptPasswordEncoder接入系統(tǒng)

    這篇文章主要介紹了使用spring?security?BCryptPasswordEncoder接入系統(tǒng)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java面試必備之ArrayList陷阱解析

    Java面試必備之ArrayList陷阱解析

    昨天小楓接到了一個(gè)公司的面試電話,其中一道面試題覺得有點(diǎn)意思,在這里和大家一起分享下。面試題是ArrayList如何刪除指定元素。乍聽很簡單的問題,但是如果沒有實(shí)際踩過坑很容易掉進(jìn)面試官的陷阱中,我們一起來分析下吧
    2022-02-02
  • Java查看和修改線程優(yōu)先級操作詳解

    Java查看和修改線程優(yōu)先級操作詳解

    JAVA中每個(gè)線程都有優(yōu)化級屬性,默認(rèn)情況下,新建的線程和創(chuàng)建該線程的線程優(yōu)先級是一樣的。本文將為大家詳解Java查看和修改線程優(yōu)先級操作的方法,需要的可以參考一下
    2022-08-08
  • springcloud項(xiàng)目快速開始起始模板的實(shí)現(xiàn)

    springcloud項(xiàng)目快速開始起始模板的實(shí)現(xiàn)

    本文主要介紹了springcloud項(xiàng)目快速開始起始模板思路的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12

最新評論

东明县| 沂源县| 勃利县| 静安区| 衡东县| 辰溪县| 惠州市| 通山县| 高邮市| 台安县| 射阳县| 梨树县| 东乌| 波密县| 普格县| 浦城县| 武乡县| 永登县| 会泽县| 博爱县| 孟村| 罗山县| 大厂| 鄄城县| 潼关县| 衢州市| 陆良县| 繁峙县| 海兴县| 黎平县| 福清市| 江安县| 嵊州市| 龙门县| 楚雄市| 论坛| 东山县| 临武县| 聂荣县| 灵台县| 买车|