hadoophortonworks-sandbox

How compile WordCount.java in Hortonworks Sandbox?


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


Solution

  • 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