在Hadoop中包含第三方Jars

时间:2013-05-02 14:03:48

标签: hadoop

我是Hadoop的新手。我已将Gson API添加到MapReducing Program中。当我运行程序时,

Error: java.lang.ClassNotFoundException: com.google.gson.Gson

有人可以建议我如何将第三方库添加到Hadoop吗?

2 个答案:

答案 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>

它将按预期使用该文件。