我是Hadoop的新手。我已将Gson API添加到MapReducing Program中。当我运行程序时,
Error: java.lang.ClassNotFoundException: com.google.gson.Gson
有人可以建议我如何将第三方库添加到Hadoop吗?
答案 0 :(得分:3)
请务必在提交作业后向HADOOP_CLASSPATH
和-libjars
添加任何依赖项,如以下示例所示:
使用以下命令添加当前和lib
目录中的所有jar依赖项:
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:`echo *.jar`:`echo lib/*.jar | sed 's/ /:/g'`
请记住,通过hadoop jar
开始工作时,您还需要使用-libjars
将任何依赖项的jar传递给它。我喜欢用:
hadoop jar <jar> <class> -libjars `echo ./lib/*.jar | sed 's/ /,/g'` [args...]
注意: sed
命令需要不同的分隔符; HADOOP_CLASSPATH
已:
分开且-libjars
需要,
分开。
答案 1 :(得分:0)
在HADOOP_CLASSPATH中添加Jar
vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
添加最后一行
export HADOOP_CLASSPATH=/root/hadoop/extrajars/java-json.jar:$HADOOP_CLASSPATH
“/ root / hadoop / extrajars / java-json.jar”是linux盒子本身的路径而不是HDFS上的路径
重启hadoop
命令
hadoop classpath
应该在类路径中显示jar
现在像往常一样运行MR工作
hadoop jar <MR-program jar> <MR Program class> <input dir> <output dir>
它将按预期使用该文件。