Javac не может найти символ для класса работы - PullRequest
0 голосов
/ 03 декабря 2018

Мой исполняемый файл:

package hadoop; 

import java.util.*; 

import java.io.IOException; 
import java.io.IOException; 

import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.conf.*; 
import org.apache.hadoop.io.*; 
import org.apache.hadoop.mapred.*; 
import org.apache.hadoop.util.*; 
import javax.lang.model.util.Elements;
public class ProcessUnits 
{ 
   //Mapper class 
   public static class E_EMapper extends MapReduceBase implements 
   Mapper<LongWritable ,/*Input key Type */ 
   Text,                /*Input value Type*/ 
   Text,                /*Output key Type*/ 
   IntWritable>        /*Output value Type*/ 
   { 

      //Map function 
      public void map(LongWritable key, Text value, 
      OutputCollector<Text, IntWritable> output,   
      Reporter reporter) throws IOException 
      { 
         String line = value.toString(); 
         String lasttoken = null; 
         StringTokenizer s = new StringTokenizer(line,"\t"); 
         String year = s.nextToken(); 

         while(s.hasMoreTokens())
            {
               lasttoken=s.nextToken();
            } 

         int avgprice = Integer.parseInt(lasttoken); 
         output.collect(new Text(year), new IntWritable(avgprice)); 
      } 
   } 


   //Reducer class 
   public static class E_EReduce extends MapReduceBase implements 
   Reducer< Text, IntWritable, Text, IntWritable > 
   {  

      //Reduce function 
      public void reduce( Text key, Iterator <IntWritable> values, 
         OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException 
         { 
            int maxavg=30; 
            int val=Integer.MIN_VALUE; 

            while (values.hasNext()) 
            { 
               if((val=values.next().get())>maxavg) 
               { 
                  output.collect(key, new IntWritable(val)); 
               } 
            } 

         } 
   }  


   //Main function 
   public static void main(String args[])throws Exception 
   { 
      JobConf conf = new JobConf(Eleunits.class); 

      conf.setJobName("max_eletricityunits"); 
      conf.setOutputKeyClass(Text.class);
      conf.setOutputValueClass(IntWritable.class); 
      conf.setMapperClass(E_EMapper.class); 
      conf.setCombinerClass(E_EReduce.class); 
      conf.setReducerClass(E_EReduce.class); 
      conf.setInputFormat(TextInputFormat.class); 
      conf.setOutputFormat(TextOutputFormat.class); 

      FileInputFormat.setInputPaths(conf, new Path(args[0])); 
      FileOutputFormat.setOutputPath(conf, new Path(args[1])); 

      JobClient.runJob(conf); 
   } 
} 

Когда я компилирую его с помощью:

javac -classpath /home/javier/entrada/hadoop-core-1.2.1.jar -d/ home / javier / units /home/javier/entrada/ProcessUnits.java

У меня следующая ошибка:

javac -classpath /home/javier/entrada/hadoop-core-1.2.1.jar -d /home/javier/units /home/javier/entrada/ProcessUnits.java
/home/javier/entrada/ProcessUnits.java:72: error: cannot find symbol
      JobConf conf = new JobConf(Eleunits.class); 
                                 ^
  symbol:   class Eleunits
  location: class ProcessUnits
1 error

Моя версия hadoop 2.9.2 и моя версия java1.8.0_191

Когда я открываю его с помощью eclipse и смотрю на него, я не нахожу импорт Eleunits.class

1 Ответ

0 голосов
/ 05 декабря 2018

Моя версия hadoop - 2.9.2, а моя версия java - 1.8.0_191

Во-первых, hadoop-core-1.2.1.jar был построен задолго до того, как Hadoop 2.9.2 был даже задуман, так что вам понадобится новый JAR

Когда я открываю его с помощью eclipse и смотрю на него, я не нахожу импорт Eleunits.class

Непонятно, почему вы не использовали Eclipse все время!Мне даже страшно не использовать Maven или Gradle для получения правильных версий библиотеки для Hadoop ... Но Eclipse, вероятно, не лжет.Вы показали только один класс, и этот класс не называется Eleunits, и я не уверен, как вы получили это значение, кроме как скопированное из другого места

Кроме того, основной класс должен extends Configured implements Tool, как вы найдете в других примерах MapReduce

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...