hadoop:编译wordcount时执行错误

rt4zxlrg  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(481)

我已经安装了hadoop3.1.1,它正在工作。但是,当我尝试编译wordcount示例时,收到以下错误:

/usr/local/hadoop/libexec/hadoop-functions.sh: line 2358: HADOOP_COM.SUN.TOOLS.JAVAC.MAIN_USER: bad substitution
/usr/local/hadoop/libexec/hadoop-functions.sh: line 2453: HADOOP_COM.SUN.TOOLS.JAVAC.MAIN_OPTS: bad substitution

为了编译,我使用了下一行:

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

我在.bashrc中有下一个变量:


# Hadoop variables

export HADOOP_HOME=/usr/local/hadoop
export CONF=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

# Java home

export JAVA_HOME=${JAVA_HOME}/java-8-oracle

# Path Java Tools

export HADOOP_CLASSPATH=$JAVA_HOME/lib/tools.jar

这次我使用的是oracle的java8,因为ubuntu18.08lts的apt-get没有给我安装openjdk8的选项。我已经更新和升级了ubuntu。
我读过很多不同的帖子和可能的解决方法,但我不能解决它。

33qvvth1

33qvvth11#

这是一个可行的解决办法,我发现在https://janzhou.org/2014/how-to-compile-hadoop.html
设置hadoop\u类路径:

export HADOOP_CLASSPATH=$(bin/hadoop classpath)

编译:

javac -classpath ${HADOOP_CLASSPATH} -d WordCount/ WordCount.java

相关问题