编译平均温度代码时遇到此错误。它给了我以下错误。
hduser@ubuntu:/home/sara/Desktop/MaxTemp$ javac -classpath
$HADOOP_HOME/share/hadoop/common/hadoop-common-
2.7.2.jar:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-
core-2.7.2.jar:$HADOOP_HOME/share/hadoop/common/lib/commons-cli-1.2.jar
-d '/home/sara/Desktop/MaxTemp' *.java
AverageDriver.java:17: error: error while writing AvgMaxTemp:
/home/sara/Desktop/MaxTemp/AverageDriver$AvgMaxTemp.class
public static class AvgMaxTemp extends Mapper<Object, Text, Text,
IntWritable>{
^
1 error
我用于数据的CSV文件
代码是
public class AverageDriver {
public static class AvgMaxTempM extends Mapper<Object, Text, Text,
IntWritable>{
private IntWritable TmaxValue = new IntWritable();
private Text Value = new Text();
public void map(Object key, Text value, Context con) throws
IOException, InterruptedException
{
String line = value.toString();
String[] words = line.split(",");
TmaxValue.set(Integer.parseInt(words[2]));
Value.set(words[3]);
if(words[2].equals("TMAX")){
for(String word: words )
{
con.write( Value , TmaxValue );
}
} } }
public class AveragemaxTempR extends Reducer< Text, IntWritable,Text,
IntWritable >
{
public void reduce(Text key, Iterable<IntWritable> values,
Context
context) throws IOException,
InterruptedException
{
int max_temp = 0;
int count = 0;
for (IntWritable value : values)
{
max_temp += value.get();
count+=1;
}
context.write(key, new IntWritable(max_temp/count));
}
}
最佳答案
您的驱动程序类中有一个静态类,它会引发编译错误:
public class AverageDriver {
public static class AvgMaxTempM extends Mapper<Object, Text, Text,
IntWritable>{
您是否正在使用像IntelliJ或Eclipse这样的IDE?它可以帮助格式化代码并在编译之前识别类似问题。