如何在 Hortonworks Sandbox 中编译 WordCount.java?
How compile WordCount.java in Hortonworks Sandbox?
我正在学习教程并尝试 运行 Hortonworks Data Platform Sandbox 中的 WordCount 示例。但是,当我尝试从命令行编译时出现错误并且无法构建它。
在终端我输入Java编译命令:
$ javac WordCount.java
我没有编译和获取 .class 文件,而是收到以下错误:
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
我做错了什么?我使用当前版本的 Hortonworks Sandbox 2.6.1。 Hadoop 版本为 3.1.1
您需要指定正确的 class 路径。在 Sandbox 中你可以使用 hadoop class路径信息。
试试这个(注意引号,它们必须是反引号!"`"):
$ javac -cp `hadoop classpath` WordCount.java
我正在学习教程并尝试 运行 Hortonworks Data Platform Sandbox 中的 WordCount 示例。但是,当我尝试从命令行编译时出现错误并且无法构建它。
在终端我输入Java编译命令:
$ javac WordCount.java
我没有编译和获取 .class 文件,而是收到以下错误:
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
我做错了什么?我使用当前版本的 Hortonworks Sandbox 2.6.1。 Hadoop 版本为 3.1.1
您需要指定正确的 class 路径。在 Sandbox 中你可以使用 hadoop class路径信息。
试试这个(注意引号,它们必须是反引号!"`"):
$ javac -cp `hadoop classpath` WordCount.java