I am following a tutorial and try to run the WordCount example in Hortonworks Data Platform Sandbox. However when I try to compile from command line I get errors and cannot build it.
In Terminal I enter Java compile command:
$ javac WordCount.java
Instead of compiling and getting a .class file, I get the following error:
WordCount.java:27: error: package org.apache.hadoop.conf does not exist
import org.apache.hadoop.conf.Configuration;
^
WordCount.java:28: error: package org.apache.hadoop.conf does not exist
import org.apache.hadoop.conf.Configured;
^
WordCount.java:29: error: package org.apache.hadoop.fs does not exist
import org.apache.hadoop.fs.Path;
^
WordCount.java:30: error: package org.apache.hadoop.io does not exist
import org.apache.hadoop.io.IntWritable;
^
WordCount.java:31: error: package org.apache.hadoop.io does not exist
import org.apache.hadoop.io.LongWritable;
^
WordCount.java:32: error: package org.apache.hadoop.io does not exist
import org.apache.hadoop.io.Text;
^
WordCount.java:42: error: package org.apache.hadoop.util does not exist
import org.apache.hadoop.util.Tool;
^
WordCount.java:43: error: package org.apache.hadoop.util does not exist
import org.apache.hadoop.util.ToolRunner;
^
WordCount.java:54: error: cannot find symbol
public class WordCount extends Configured implements Tool {
^
symbol: class Configured
WordCount.java:54: error: cannot find symbol
public class WordCount extends Configured implements Tool {
^
symbol: class Tool
WordCount.java:61: error: cannot access Closeable
public static class MapClass extends MapReduceBase
^
class file for org.apache.hadoop.io.Closeable not found
WordCount.java:64: error: cannot find symbol
private final static IntWritable one = new IntWritable(1);
^
symbol: class IntWritable
location: class MapClass
WordCount.java:65: error: cannot find symbol
private Text word = new Text();
^
symbol: class Text
location: class MapClass
WordCount.java:67: error: cannot find symbol
public void map(LongWritable key, Text value,
^
symbol: class LongWritable
location: class MapClass
WordCount.java:67: error: cannot find symbol
public void map(LongWritable key, Text value,
^
symbol: class Text
location: class MapClass
WordCount.java:68: error: cannot find symbol
OutputCollector<Text, IntWritable> output,
^
symbol: class Text
location: class MapClass
WordCount.java:68: error: cannot find symbol
OutputCollector<Text, IntWritable> output,
^
symbol: class IntWritable
location: class MapClass
WordCount.java:83: error: cannot find symbol
implements Reducer<Text, IntWritable, Text, IntWritable> {
^
symbol: class Text
location: class WordCount
WordCount.java:83: error: cannot find symbol
implements Reducer<Text, IntWritable, Text, IntWritable> {
^
symbol: class IntWritable
location: class WordCount
WordCount.java:83: error: cannot find symbol
implements Reducer<Text, IntWritable, Text, IntWritable> {
^
symbol: class Text
location: class WordCount
WordCount.java:83: error: cannot find symbol
implements Reducer<Text, IntWritable, Text, IntWritable> {
^
symbol: class IntWritable
location: class WordCount
WordCount.java:85: error: cannot find symbol
public void reduce(Text key, Iterator<IntWritable> values,
^
symbol: class Text
location: class Reduce
WordCount.java:85: error: cannot find symbol
public void reduce(Text key, Iterator<IntWritable> values,
^
symbol: class IntWritable
location: class Reduce
WordCount.java:86: error: cannot find symbol
OutputCollector<Text, IntWritable> output,
^
symbol: class Text
location: class Reduce
WordCount.java:86: error: cannot find symbol
OutputCollector<Text, IntWritable> output,
^
symbol: class IntWritable
location: class Reduce
What am I doing wrong? I use Hortonworks Sandbox 2.6.1, the current version. Hadoop version is 3.1.1
You need to specify correct class path. In Sandbox you can use hadoop classpath information.
Try this (watch for the quotation marks, they need to be backticks! "`"):
$ javac -cp `hadoop classpath` WordCount.java