来自:http://heipark.iteye.com/blog/1171923

通过 "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);
        }
    }

使用hadoop eclipse plugin提交Job并添加多个第三方jar的更多相关文章

  1. Windows平台上使用ANT编译Hadoop Eclipse Plugin

    一.准备工作:   1.安装JDK 下载页面:http://www.oracle.com/technetwork/java/javase/downloads/index.html JDK6,JDK7都 ...

  2. Hadoop eclipse plugin

    我的eclipse是在win7上,hadoop在win7里的虚拟机里的ubuntu上,为了方便起见,想在eclipse上安装hadoop的插件,主要参考 https://my.oschina.net/ ...

  3. Hadoop 1.1.2 eclipse plugin 编译 win7 集成

    Windows平台上使用ANT编译Hadoop Eclipse Plugin 一.准备工作:   1.安装JDK 下载页面:http://www.oracle.com/technetwork/java ...

  4. The command ("dfs.browser.action.delete") is undefined 解决Hadoop Eclipse插件报错

    Hadoop Eclipse插件 报错. 使用 hadoop-eclipse-kepler-plugin-2.2.0.jar 如下所示 Error Log 强迫症看了 受不了 The command ...

  5. Eclipse远程提交hadoop集群任务

    文章概览: 1.前言 2.Eclipse查看远程hadoop集群文件 3.Eclipse提交远程hadoop集群任务 4.小结   1 前言 Hadoop高可用品台搭建完备后,参见<Hadoop ...

  6. Hadoop 2.5.2 eclipse plugin 编译 win7 集成

      一.hadoop集群环境配置 参考我的前一篇文章(ubuntu + hadoop2.5.2分布式环境配置 http://www.cnblogs.com/huligong1234/p/4136331 ...

  7. Hadoop Eclipse开发环境搭建

        This document is from my evernote, when I was still at baidu, I have a complete hadoop developme ...

  8. 在eclipse上提交任务到集群执行

    win7下eclipse远程开发hadoop程序,分为两种: (1)运行[Run As] Java Application, 打包程序为jar,上传集群执行(这里不做解释) (2)运行[Run As] ...

  9. (转)Hadoop Eclipse开发环境搭建

    来源:http://www.cnblogs.com/justinzhang/p/4261851.html This document is from my evernote, when I was s ...

随机推荐

  1. SharePoint 2016 工作流报错“没有适用于此应用程序的地址”

    前言 最近为SharePoint 2016配置工作流,创建工作流的过程中遇到这样一个错误,记录分享下来,希望能够为有需要的人带来帮助. 错误截图 创建完毕工作流,发布的时候报错,保存没有问题. 错误信 ...

  2. 超能英雄第一至四季/全集Heroes迅雷下载

    本季第一.二.三.四季 Heroes Season (2006-2009) 看点:<Heroes>是NBC电视台于2006年九月开播的最新科幻电视剧.Heroes(中文剧名为“英雄”或“天 ...

  3. Android之循环显示图像的Android Gallery组件

    转自:http://www.blogjava.net/nokiaguy/archive/2010/08/23/329721.html Gallery组件主要用于横向显示图像列表,不过按常规做法.Gal ...

  4. java 模拟发送post请求测试

    方法一: HttpClient public void postTest(HttpServletRequest request,Integer type,String phone,String pas ...

  5. Dubbo服务化最佳实践

    分包 建议将服务接口,服务模型,服务异常等均放在 API 包中,因为服务模型及异常也是 API 的一部分,同时,这样做也符合分包原则:重用发布等价原则(REP),共同重用原则(CRP). 如果需要,也 ...

  6. ping命令流程详解

    现在有以下需求,PC1的IP地址为192.168.0.10/24,PC2的IP地址为192.168.0.20/24,SW交换机的IP地址为192.168.0.30/24,问PC1能否ping通PC2? ...

  7. mysqlpump:更加合理的mysql数据库逻辑备份工具

    端看参见就知道了! E:\mysql-8.0.12-winx64>mysqlpump --helpmysqlpump Ver 8.0.12 for Win64 on x86_64 (MySQL ...

  8. libcurl库的http get和http post使用【转】

    一.libcurl中的http get使用方法 1. 为什么要使用libcurl 1) 作为http的客户端,可以直接用socket连接服务器,然后对到的数据进行http解析,但要分析协议头,实现代理 ...

  9. 大型Web 网站 Asp.net Session过期你怎么办

    在 WEB 系统中, 我们一般会用session来保存一些简单但是却很重要的信息.比如Asp.net中经常会用Session来保存用户登录信息,比如UserID.为了解决 WEB场大家采用了把sess ...

  10. Latex使用的注意事项

    CTEX : CTeXDownload latex中的图片格式主要就2种 pdf 和 eps.如果要用pdflatex编译,那么自然选择pdf,如果用latex编译,自然用eps.本人论文中的图片来源 ...