Hadoop 字数统计示例中的"Cannot find symbol"错误



我正试图通过这本书数据分析与Hadoop中给出的Hadoop MapReduce单词计数示例来工作,这本书让我设置了一个Hadoop伪分布式开发环境。所以现在我试着运行一个单词计数的例子。我从Hadoop基础中下载了。java文件,WordCount文件夹。书中给出的启动这个过程的代码是:

hostname $ hadoop com.sun.tools.javac.Main WordCount.java

我运行这个,收到以下错误:

hadoop@gh0st-VirtualBox:/home/gh0st$ hadoop com.sun.tools.javac.Main Downloads/WordCount/WordCount.java
Downloads/WordCount/WordCount.java:32: error: cannot find symbol
        job.setMapperClass(WordMapper.class);
                           ^
  symbol:   class WordMapper
  location: class WordCount
Downloads/WordCount/WordCount.java:33: error: cannot find symbol
        job.setReducerClass(SumReducer.class);
                            ^
  symbol:   class SumReducer
  location: class WordCount
Note: Downloads/WordCount/WordCount.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
2 errors

WordMapper.java和SumReducer.java文件位于我运行WordCount.java文件的同一个WordCount文件夹中。考虑到我所读到的有关这方面的内容,我不确定从哪里开始。我的$JAVA_HOME/usr/lib/jvm/java-7-openjdk-amd64/。我的$CLASS_PATH$HADOOP_HOME/share/hadoop/common/hadoop-common-2.7.3.jar。我不确定还需要什么信息来解决这个问题——我将添加其他需要的信息。以下链接是我看过并尝试过的:

Hadoop Problems

编译问题

我在VirtualBox中使用Ubuntu 14.04

经过一番深入研究,我找到了答案。答案在以下链接的评论中:驱动程序类编译错误

我必须把所有的文件编译在一起。新代码看起来像这样:

hadoop com.sun.tools.javac.Main Downloads/WordCount/WordCount.java Downloads/WordCount/WordMapper.java Downloads/WordCount/SumReducer.java

希望这能帮助到一些人!

这对我有用:

  1. Export Hadoop classpath:
export CLASSPATH=`hadoop classpath`
  • 检查路径是否存在:
  • echo $CLASSPATH
    
  • 同时运行它们:
  • javac -d . WC_Runner.java WC_Mapper.java WC_Reducer.java
    

    相关内容

    • 没有找到相关文章

    最新更新