我是Hadoop的新手。我已将Gson API添加到我的MapReducing程序中。当我正在运行程序时;在Hadoop中包含第三方Jars
Error: java.lang.ClassNotFoundException: com.google.gson.Gson
任何人都可以建议我如何添加第三方库到Hadoop吗?
我是Hadoop的新手。我已将Gson API添加到我的MapReducing程序中。当我正在运行程序时;在Hadoop中包含第三方Jars
Error: java.lang.ClassNotFoundException: com.google.gson.Gson
任何人都可以建议我如何添加第三方库到Hadoop吗?
务必在提交就像下面这个例子的工作,任何依赖关系添加到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
需要分开,
。
我试图通过这样做的意见.. 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
查看这里发布的答案:http://stackoverflow.com/questions/6890087/problem-with-libjars-在-的Hadoop – 2013-11-06 03:27:57
添加的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>
它将使用文件按预期。
退房这个问题 http://stackoverflow.com/questions/11345923/how-to-import-org-apache-java-dependancies – 2013-05-02 14:05:15
这将是更好,如果你告诉我们,你的代码。 – Castiblanco 2013-05-02 14:05:15
检查我的答案在这里,我已经解释了所有可用的选项来解决这个问题在这里:http://stackoverflow.com/a/36227260/1766402 – Isaiah4110 2016-03-27 00:37:30