Syangy 2021-07-27 18:50 采纳率: 100%
浏览 306
已结题

我的jar包在hadoop运行程序出现了问题(非代码错误)

代码放到MyMatrix这个文件夹下的MartrixMultiply.java文件里面。程序的编译和打包成jar包一切顺利,但是当我运行在hadoop下运行jar包时出了问题。我输入了以下linux命令:hadoop jar MartrixMultiply.jar MyMatrix/MartrixMultiply 但是给我报出了如下错误:Exception in thread "main" java.lang.ClassNotFoundException: MyMatrix.MartrixMultiply。我也不太懂java,艘了很多资料没找到解决的办法,请问我是哪里错了

package MyMatrix;
 
import java.io.IOException;
import java.util.Iterator;
 
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.MultipleInputs;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
 
public class MartrixMultiply{
    
    /**
     * 最后得到的矩阵的列数
     */
    public static final int COL_COUNT = 2;
    
    /**
     * 最后得到的矩阵的行数
     */
    public static final int ROW_COUNT = 4;
    
    /**
     * A矩阵的列数或者是B矩阵的行数
     */
    public static final int BROW_ACOL= 3;
    
    public static class MartrixMaperA extends Mapper<LongWritable, Text, Text, Text>{
 
        @Override
        protected void map(LongWritable key, Text value, Context context)
                throws IOException, InterruptedException {
            
            String valueStr = value.toString();
            String[] items = valueStr.split(",");
            
            int rowIndex = Integer.parseInt(items[0]);
            int colIndex = Integer.parseInt(items[1]);
            int valueInt = Integer.parseInt(items[2]);
            
            Text outKey = null;
            Text outValue = null;
            for(int i=0;i<COL_COUNT;i++){
                outKey = new Text(rowIndex + "," + (i+1));
                outValue = new Text("a,"+colIndex+","+valueInt);
                context.write(outKey, outValue);
            }
            
        }
        
    }
    
    public static class MartrixMaperB extends Mapper<LongWritable, Text, Text, Text>{
 
        @Override
        protected void map(LongWritable key, Text value, Context context)
                throws IOException, InterruptedException {
            
            String valueStr = value.toString();
            String[] items = valueStr.split(",");
            
            int rowIndex = Integer.parseInt(items[0]);
            int colIndex = Integer.parseInt(items[1]);
            int valueInt = Integer.parseInt(items[2]);
            
            Text outKey = null;
            Text outValue = null;
            for(int i=0;i<ROW_COUNT;i++){
                outKey = new Text((i+1) + "," + colIndex);
                outValue = new Text("b,"+rowIndex+","+valueInt);
                context.write(outKey, outValue);
            }
            
        }
        
    }
    
    public static class MartrixReducer extends Reducer<Text,Text,Text,IntWritable>{
 
        @Override
        protected void reduce(Text key, Iterable<Text> values,Context context)
                throws IOException, InterruptedException {
 
            String[] items = new String[3];
            
            int[] valueA = new int[BROW_ACOL];
            int[] valueB = new int[BROW_ACOL];
            
            Iterator<Text> it = values.iterator();
            while(it.hasNext()){
                items = it.next().toString().split(",");
                if(items[0].equals("a")){
                    valueA[Integer.parseInt(items[1])-1] = Integer.parseInt(items[2]);
                }else if(items[0].equals("b")){
                    valueB[Integer.parseInt(items[1])-1] = Integer.parseInt(items[2]);
                }
            }
            
            int result = 0;
            for(int i=0;i<BROW_ACOL;i++){
                result += valueA[i]*valueB[i];
            }
            context.write(key, new IntWritable(result));
        }
        
    }
    
    @SuppressWarnings("deprecation")
    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
        
        Path pathA = new Path("hdfs://localhost:9000/Martrix/a.txt");
        Path pathB = new Path("hdfs://localhost:9000/Martrix/b.txt");
        Path pathOut = new Path("hdfs://localhost:9000/Martrix/out");
        
        Configuration conf = new Configuration();
        Job job = new Job(conf,"MartrixMultiply");
        
        job.setJarByClass(MartrixMultiply.class);
        
        MultipleInputs.addInputPath(job, pathA, TextInputFormat.class, MartrixMaperA.class);
        MultipleInputs.addInputPath(job, pathB, TextInputFormat.class, MartrixMaperB.class);
        
        job.setReducerClass(MartrixReducer.class);
        
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(Text.class);
        
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        
        FileOutputFormat.setOutputPath(job, pathOut);
        
        if(job.waitForCompletion(true)){
            System.exit(0);
        }else{
            System.exit(1);
        }
        
    }
    
}

  • 写回答

2条回答 默认 最新

查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月7日
  • 已采纳回答 7月30日
  • 创建了问题 7月27日

悬赏问题

  • ¥15 FIR滤波器算法设计与实现(利用库函数firdec()
  • ¥15 利用单片机产生正弦信号,来测量差分放大电路放大倍数和共模放大倍数的思路和仿真
  • ¥60 关于mavlink的论文咨询
  • ¥66 定制开发肯德基自动化网站下单软件
  • ¥15 中科院研发的TextMind(文心)
  • ¥20 vscode虚拟环境依赖包未安装
  • ¥15 odoo17关于owl开发js代码问题
  • ¥15 光纤中多普勒频移公式的推导
  • ¥15 怎么制作一个人脸识别门禁系统
  • ¥20 大华dss监控平台网络关闭登不进去