通过 "conf.set("tmpjars", jars);" 可以设置第三方jar,之前一直只是添加一个jar,运行OK,今天打算添加多个jar的时候发现mapreduce在运行时找不到class(ClassNotFoundException),跟踪代码发现jar文件的确上传到了HDFS中,所以甚是无解,后来上传jar到hdfs,然后使用DistributedCache.addFileToClassPath()方法也不行。郁闷半天,后来看到job.xml中有一段奇怪的设置,mapred.job.classpath.files的value为"/user/heipark/lib/commons-lang-2.3.jar;/user/heipark/lib/guava-r08.jar",可以看到这个分隔符是分号(我的OS是windows),在linux系统和hadoop系统一般都是逗号和冒号分隔,然后我继续挖,发现DistributedCache.addArchiveToClassPath()方法(tmpjars也会用这个方法)中使用了“System.getProperty("path.separator")”,于是灵感闪现,修改该值为linux系统的冒号,我嚓,居然成功了,搞了我4个小时,eclipse终于可以添加多个第三方jar包了。封装了方法,在main方法直接添加jar包就可以了。
调用:
addTmpJar("D:/Java/new_java_workspace/scm/lib/guava-r08.jar", conf);
方法定义:
/**
* 为Mapreduce添加第三方jar包
*
* @param jarPath
* 举例:D:/Java/new_java_workspace/scm/lib/guava-r08.jar
* @param conf
* @throws IOException
*/
public static void addTmpJar(String jarPath, Configuration conf) throws IOException {
System.setProperty("path.separator", ":");
FileSystem fs = FileSystem.getLocal(conf);
String newJarPath = new Path(jarPath).makeQualified(fs).toString();
String tmpjars = conf.get("tmpjars");
if (tmpjars == null || tmpjars.length() == 0) {
conf.set("tmpjars", newJarPath);
} else {
conf.set("tmpjars", tmpjars + "," + newJarPath);
}
}
分享到:
相关推荐
Eclipse集成Hadoop2.10.0的插件,使用`ant`对hadoop的jar包进行打包并适应Eclipse加载,所以参数里有hadoop和eclipse的目录. 必须注意对于不同的hadoop版本,` HADDOP_INSTALL_PATH/share/hadoop/common/lib`下的jar包...
最新的hadoop-eclipse-plugin-2.7.4.jar 很好用的hadoop的eclipse插件。自己编译的。 经过测试,使用没有任何问题。 请各位放心使用
hadoop-eclipse-plugin.jar插件基于Ubuntu18.04和Hadoop-3.2.1编译的,最后可以在eclipse创建Map Reduce文件
hadoop-eclipse-plugin-3.1.3,eclipse版本为eclipse-jee-2020-03
hadoop-eclipse-plugin-2.7.4.jar和hadoop-eclipse-plugin-2.7.3.jar还有hadoop-eclipse-plugin-2.6.0.jar的插件都在这打包了,都可以用。
hadoop eclipse plugin for version 1.0.1
hadoop-eclipse-plugin-2.7.2.jar完美兼容版 Tested with following eclipse version for hadoop2.7.2(http://pan.baidu.com/s/1i4plIfF): Eclipse Java EE IDE for Web Developers. Version: Mars.1 Release (4.5.1...
Hadoop Eclipse是Hadoop开发环境的插件,用户在创建Hadoop程序时,Eclipse插件会自动导入Hadoop编程接口的jar文件,这样用户就可以在Eclipse插件的图形界面中进行编码、调试和运行Hadop程序,也能通过Eclipse插件...
hadoop-eclipse-plugin-3.1.1, hadoop eclipse 插件 3.1.1
hadoop 0.21.0 eclipse-plugin jar centos6.2
eclipse连接hadoop搭建mapreduce开发环境。本资源含有hadoop-2.8.5.tar和在eclipse配置mapreduce环境的plugin的jar包,版本为2.8.5
eclipse中需要的hadoop插件,对应hadoop版本3.x。 注意:插件的版本要和用的hadoop版本保持一致
hadoop-eclipse-plugin-2.2.0.jar hadoop安装eclipse必备插件,亲测可用,欢迎大家下载,交换下载币,谢谢!
hadoop-eclipse-plugin-2.7.0.jar ,用于在eclipse上进行hadopp程序调试
hadoop-eclipse-plugin-1.2.1hadoop-eclipse-plugin-1.2.1hadoop-eclipse-plugin-1.2.1hadoop-eclipse-plugin-1.2.1
hadoop-eclipse-plugin-2.7.1.jar插件,直接放在eclipse插件目录中
网上没找到2.8.1的版本,自己编译,经测试可用。
在eclipse中搭建hadoop环境,需要安装hadoop-eclipse-pulgin的插件,根据hadoop的版本对应jar包的版本,此为hadoop3.1.2版本的插件。
hadoop2x-eclipse-plugin-master,java1.8(64位)编译,可以使用。
hadoop-eclipse-plugin-2.6.0.jar,亲测可用。 下载之后将其复制到dropins目录下,重启eclipse即可!