2013-05-02 100 views
1

我是Hadoop的新手。我已将Gson API添加到我的MapReducing程序中。当我正在运行程序时;在Hadoop中包含第三方Jars

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

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

+0

退房这个问题 http://stackoverflow.com/questions/11345923/how-to-import-org-apache-java-dependancies – 2013-05-02 14:05:15

+0

这将是更好,如果你告诉我们,你的代码。 – Castiblanco 2013-05-02 14:05:15

+0

检查我的答案在这里,我已经解释了所有可用的选项来解决这个问题在这里:http://stackoverflow.com/a/36227260/1766402 – Isaiah4110 2016-03-27 00:37:30

回答

3

务必在提交就像下面这个例子的工作,任何依赖关系添加到HADOOP_CLASSPATH-libjars两个:

使用以下从当前添加的所有jar依赖关系和lib目录:

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:`echo *.jar`:`echo lib/*.jar | sed 's/ /:/g'` 

请记住,通过hadoop jar开始工作时,您还需要通过使用-libjars将任何依赖关系的罐子传递给它。我喜欢用:

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

注:sed命令需要不同的分隔符; HADOOP_CLASSPATH:分开,-libjars需要分开,

+0

我试图通过这样做的意见.. 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/-libjars – 2013-05-03 07:04:38

+0

查看这里发布的答案:http://stackoverflow.com/questions/6890087/problem-with-libjars-在-的Hadoop – 2013-11-06 03:27:57

0

添加的Jar在HADOOP_CLASSPATH

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 

应显示罐子在classpath中

现在运行MR工作照常

hadoop jar <MR-program jar> <MR Program class> <input dir> <output dir> 

它将使用文件按预期。

相关问题