在Hadoop中包含第三方JAR

在Hadoop中包含第三方JAR,hadoop,Hadoop,我是Hadoop新手。我已将Gson API添加到我的地图还原程序中。当我运行程序时,得到 Error: java.lang.ClassNotFoundException: com.google.gson.Gson 有人能建议我如何向Hadoop添加第三方库吗?提交作业后,务必向Hadoop\u类路径和-libjars添加任何依赖项,如以下示例所示: 使用以下命令添加当前和lib目录中的所有jar依赖项: export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:`e

我是Hadoop新手。我已将Gson API添加到我的地图还原程序中。当我运行程序时,得到

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

有人能建议我如何向Hadoop添加第三方库吗?

提交作业后,务必向
Hadoop\u类路径和
-libjars
添加任何依赖项,如以下示例所示:

使用以下命令添加当前和
lib
目录中的所有jar依赖项:

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:`echo *.jar`:`echo lib/*.jar | sed 's/ /:/g'`
请记住,通过
hadoopjar
启动作业时,还需要通过使用
-libjar
传递任何依赖项的jar。我喜欢使用:

hadoop jar <jar> <class> -libjars `echo ./lib/*.jar | sed 's/ /,/g'` [args...]
hadoop jar-libjars`echo./lib/*.jar | sed's//,/g'`[args…]

注意:sed命令需要不同的分隔符;
HADOOP\u类路径
是分开的:,
-libjar
需要分开。

在HADOOP\u类路径中添加Jar

    vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
添加最后一行

export HADOOP_CLASSPATH=/root/hadoop/extrajars/java-json.jar:$HADOOP_CLASSPATH
“/root/hadoop/extrajars/javajson.jar”是linux-box本身上的路径,而不是HDFS上的路径

重新启动hadoop

命令

hadoop classpath
应该在类路径中显示jar

现在像往常一样运行job先生

hadoop jar <MR-program jar> <MR Program class> <input dir> <output dir>
hadoop jar
它将按预期使用来自的文件

检查这个问题如果你给我们看你的代码会更好。在这里检查我的答案,我已经在这里解释了解决这个问题的所有可用选项:我尝试了你的建议,就像。。bin/hadoop jar/home/Projects/MyMaprunner/dist/progenMaprunner.jar-libjars/home/hadoopJar/gson-2.2.2.jar/myData/output arg1 arg2在线程“main”org.apache.hadoop.mapreduce.lib.input.InvalidInputException中获得异常作为异常:输入路径不存在:hdfs://localhost:9000/user/MyDesktop/-libjarsCheck在这里发布了答案: