当前位置: 首页 > 知识库问答 >
问题:

找不到符号[复制]

慕光霁
2023-03-14

我再次请求您的技术支持。

我在代码中收到多个“找不到符号错误”。我怎样才能纠正这个错误?我在转换变量类型时也有问题。

对于其中的一些变量,我尝试使用新文本(some_string_variable)来转换它们。是否需要使用“新”零件?。我可以直接调用文本(一些字符串变量)吗?

import java.io.*;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.util.*;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;




public class mapreduce{

  public static class XMapper extends Mapper<Object, Text, IntWritable, Text>{
 //@Override

    //private IntWritable keys = new IntWritable();
    private Text nums = new Text();

    private final static IntWritable one = new IntWritable(1);

    public void map(Object key, Text value, Context context) throws IOException, InterruptedException {

    String[] Columns = value.toString().split(",");
    String col0 = Columns[0];
    String col1 = Columns[1];
    String col2 = Columns[2];
    String col3 = Columns[3];

    int colInt0 = Integer.parseInt(col0);
    int colInt2 = Integer.parseInt(col2);
    double colInt3 = Double.parseDouble(col3);

    if(colInt0 != 0 && colInt2 !=0 && colInt3 !=0){

        nums = String.valueOf(one)+"\t"+String.valueOf(colInt3);

        context.write(new IntWritable(colInt0), new Text(nums));


        }


    }

  }

  public static class XReducer extends Reducer<IntWritable,Text,IntWritable,Text>{
    public Text tupleResult = new Text();

    private IntWritable result = new IntWritable();

    public void reduce(IntWritable key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
        //int colKey = 0;

        //int colVal = 0;
        int countAll = 0;
        float sumAll = 0;

        for(Text val: values){

            StringTokenizer itr = new StringTokenizer(val.toString());

            int count = Integer.parseInt(itr.nextToken());
            double sum = Double.parseDouble(itr.nextToken());



            }
        TupleResult.set(Integer.toString(count)+','+Double.toString(sum));
        context.write(new IntWritable(key),new Text(TupleResult));

        }


    }




  public static void main(String[] args) throws Exception {
    Configuration conf = new Configuration();
    Job job = Job.getInstance(conf, "mapreduce");

    /* TODO: Needs to be implemented */
    job.setJarByClass(mapreduce.class);
    job.setMapperClass(XMapper.class);
    job.setReducerClass(XReducer.class);
    job.setOutputKeyClass(IntWritable.class);
    job.setOutputValueClass(Text.class);

    //

    FileInputFormat.addInputPath(job, new Path(args[0]));
    FileOutputFormat.setOutputPath(job, new Path(args[1]));
    System.exit(job.waitForCompletion(true) ? 0 : 1);
  }
}

[ERROR]  mapreduce.java:[38,48] incompatible types: java.lang.String cannot be converted to org.apache.hadoop.io.Text
[ERROR] mapreduce.java:[64,25] cannot find symbol
[ERROR]   symbol:   class StringTokenizer
[ERROR]   location: class mapreduce.XReducer
[ERROR] mapreduce.java:[64,51] cannot find symbol
[ERROR]   symbol:   class StringTokenizer
[ERROR]   location: class mapreduce.XReducer
[ERROR] mapreduce.java:[72,50] cannot find symbol
[ERROR]   symbol:   variable count
[ERROR]   location: class mapreduce.XReducer
[ERROR] mapreduce.java:[72,77] cannot find symbol
[ERROR]   symbol:   variable sum
[ERROR]   location: class mapreduce.XReducer
[ERROR] mapreduce.java:[72,17] cannot find symbol
[ERROR]   symbol:   variable TupleResult
[ERROR]   location: class mapreduce.XReducer
[ERROR] mapreduce.java:[73,47] incompatible types: org.apache.hadoop.io.IntWritable cannot be converted to int
[ERROR] mapreduce.java:[73,61] cannot find symbol
[ERROR]   symbol:   variable TupleResult
[ERROR]   location: class mapreduce.XReducer

共有1个答案

冯胤
2023-03-14

Symbole not found错误可能是由于未导入所有使用的类,例如StringTokenizer(https://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html)

new部分是必需的,因为您正在创建一个hadoop文本对象

最好的问候

 类似资料:
  • 由于某些原因,此命令在我的本地计算机上运行良好: 然而,对于Codeship,它现在可以工作了,并抛出这个“找不到符号”错误。在Codeship中,完整命令是: 在POM中,存储库具有以下内容: 错误:

  • DBHelper。JAVA LoginSevlet.java 我正在尝试访问LoginServlet中的DBHelper类,而编译i做了javac DBHelper.javajavac-cp"C:\User\dell\Desktop\MYServlet\WEB-INF\lib\servlet-api-2.5.jar;"LoginServlet.javaLoginServlet.java:13:错误

  • 由于某种原因,此命令在我的本地计算机上运行良好: 但是,对于Codeship,它现在起作用了,并抛出这个“无法找到符号”错误。在Codeship中,完整命令为: 在POM中,存储库具有以下内容: 错误:

  • 尝试以以下方式创建(或者更确切地说是学习): 我正在使用一个在线编译器,并且已经搜索了很多,我发现我的声明方式是正确的,但是其他的东西正在弹出错误 下面是错误 我需要的帮助是:我只是试图获得创建一个hashmap的基础,并在其中插入一些键和值,但上面的错误阻止了我在第一步............................................................:)

  • 问题内容: 如果这是一个怪异的问题,我感到很抱歉,但是我刚刚开始OOP,并遇到了一个我应该制作的简单菜单驱动数学程序。我清除了编译器给我的所有错误,但是现在它给了我大约14个新错误,其中大多数被描述为“找不到符号”。这是我的代码: 这是新的编译器输出: 问题答案: 您从未在方法的主体中定义变量。尝试在方法中添加。简单地定义的变量并 没有 放弃对它的访问。如果要避免多次创建实例,可以执行以下操作 然

  • 问题内容: 我正在尝试为计算器编写第一个单元测试,但是NetBeans表示找不到符号和注释。 我应该包括一些东西吗? 我正在使用NetBeans 7.3.1和W7。 编辑:谢谢大家,将其导入为静态帮助。测试注释仅需包括 导入org.junit.Test; 问题答案: 是静态方法。由于不能使用静态方法而没有以静态方式显式导入它们,因此必须使用以下两种方法之一: 要么: 因为有点不同。是的注释,您可以