在Hadoop平台上运行程序时,导入第三方类库的方法

本文介绍在Hadoop MapReduce程序中加载第三方类库的四种常见方法,并解释其原理,帮助开发者有效避免ClassNotFoundException异常。

【转】http://yixiaohuamax.iteye.com/blog/850410

 

在将编写的MapReduce程序提交到Hadoop集群中运行时,往往需要导入第三方类库,否则很容易报出:Error: java.lang.ClassNotFoundException:异常,首先说一下以下四种解决方法:

 

(1) 将第三方jar包放在集群中每个节点$HADOOP_HOME/lib目录下或者JDK的ext目录下,其中$HAOOP_HOME为Hadoop的根目录。

 

 

      这种方法在linux下还可以写一个shell脚本,用scp或者rcp命令来实现,这脱离了java范畴,依赖操作系统,不好。

 

(2) 将所有的jar包解压缩,然后把他和源程序的类文件打包到一个jar包中,这种方法比较笨重,可以用程序去实现。

 

(3) 用DistributedCache .addFileToClassPath(Path file, Configuration conf)或者DistributedCache .addArchiveToClassPath(Path archive, Configuration conf) ,其中路径是HDFS上的一个路径,不要用HDFS://等类似的路径,而要用相对路径。

(4) 将第三方jar包和源程序类文件打包到一个jar包中,设置manifest.mf的classpath值,为jar包所在的路径,这个路径必须是相对应当前jar包的路径。

 

原理:

   主要借鉴了在提交作业到Haodop中时,hadoop寻找classpath的方式,寻找的地方来解决的。

调用格式: 〈无返回值〉 皮肤加载 ([字节集 资源皮肤]) - 蒋勇API支持库->通用 英文名称:SkinH 加载内存的皮肤。本命令为初级命令。 参数<1>的名称为“资源皮肤”,类型为“字节集(bin)”,可以被省略。加载内 存的皮肤。 调用格式: 〈无返回值〉 皮肤卸载 () - 蒋勇API支持库->通用 英文名称:SkinHclose 加载内存的皮肤卸载。本命令为初级命令。 调用格式: 〈通用型〉 取通用型的值 ([通用型 参数]) - 蒋勇API支持库->通用 英文名称:Getall 取通用型的值。本命令为初级命令。 参数<1>的名称为“参数”,类型为“通用型(all)”,可以被省略。一个通用型参数。 调用格式: 〈通用型〉 winapi ([文本型 库名],文本型 函数名,整数型 定义返回类型,[通用型 参数],... ) - 蒋勇API支持库->通用 英文名称:winapi 动态调用API。本命令为初级命令。命令参数表中最后一个参数可以被重复添加。 参数<1>的名称为“库名”,类型为“文本型(text)”,可以被省略。文本型参数。 参数<2>的名称为“函数名”,类型为“文本型(text)”。文本型参数。 参数<3>的名称为“定义返回类型”,类型为“整数型(int)”,初始值为“1”。1#数据类型_整数型, #2数据类型_字节型, #3数据类型_短整数型, #4数据类型_长整数型, #5数据类型_小数型, #6数据类型_双精度小数型, 7#数据类型_逻辑型, 8#数据类型_日期时间型,9 #数据类型_子程序指针,10 #数据类型_文本型。 参数<4>的名称为“参数”,类型为“通用型(all)”,可以被省略。参数。 调用格式: 〈整数型〉 取址 (通用型变量 参数) - 蒋勇API支持库->通用 英文名称:Getdate 万用取地址2。本命令为初级命令。 参数<1>的名称为“参数”,类型为“通用型(all)”,提供参数数据时只能提供变量。通用型参数。
蒋勇API支持库2.5.2带静态库(终极版).版本 2 --- 命令类别: 系统处理 --- 调用格式: 〈通用型〉 取通用型的值 ([通用型 参数]) - 蒋勇API支持库->系统处理 英文名称:jy_TakeUniversalAddress 取通用型的值。本命令为初级命令。 参数<1>的名称为“参数”,类型为“通用型(all)”,可以被省略。一个通用型参数。 操作系统需求: Windows 调用格式: 〈通用型〉 winAPI ([文本型 库名],文本型 函数名,整数型 定义返回类型,[通用型 参数],... ) - 蒋勇API支持库->系统处理 英文名称:jy_CallAPI API是直接与cpu交互的。本命令为初级命令。命令参数表中最后一个参数可以被重复添加。 参数<1>的名称为“库名”,类型为“文本型(text)”,可以被省略。文本型参数。 参数<2>的名称为“函数名”,类型为“文本型(text)”。文本型参数。 参数<3>的名称为“定义返回类型”,类型为“整数型(int)”,初始值为“1”。1#数据类型_整数型, #2数据类型_字节型, #3数据类型_短整数型, #4数据类型_长整数型, #5数据类型_小数型, #6数据类型_双精度小数型, 7#数据类型_逻辑型, 8#数据类型_日期时间型,9 #数据类型_子程序指针,10 #数据类型_文本型。 参数<4>的名称为“参数”,类型为“通用型(all)”,可以被省略。参数。 操作系统需求: Windows 调用格式: 〈整数型〉 取址A (通用型变量 参数) - 蒋勇API支持库->系统处理 英文名称:jy_TakeAddress 这个只支持变量。本命令为初级命令。 参数<1>的名称为“参数”,类型为“通用型(all)”,提供参数数据时只能提供变量,提供参数数据时可以同时提供数组或非数组数据。通用型参数。 操作系统需求: Windows 调用格式: 〈整数型〉 取址B ([通用型 参数]) - 蒋勇API支持库->系统处理 英文名称:jy_TakeAddressA 只能取文本和字节集的地址,对数值型的请用取址A。本命令为初级命令。 参数<1>的名称为“参数”,类型为“通用型(all)”,可以被省略。参数。 操作系统需求: Windows 调用格式: 〈无返回值〉 皮肤_加载 ([字节集 资源皮肤],[逻辑型 是否vista]) - 蒋勇API支持库->系统处理 英文名称:jy_SkinH 加载内存的皮肤。本命令为初级命令。 参数<1>的名称为“资源皮肤”,类型为“字节集(bin)”,可以被省略。加载内存的皮肤。 参数<2>的名称为“是否vista”,类型为“逻辑型(bool)”,可以被省略。启用Vista效果,即标题栏半透明。 操作系统需求: Windows 调用格式: 〈无返回值〉 皮肤_卸载 () - 蒋勇API支持库->系统处理 英文名称:jy_SkinHclose 加载内存的皮肤卸载。本命令为初级命令。 操作系统需求: Windows 调用格式: 〈通用型〉 调用子程序 (通用型 子程序指针或地址,整数型 定义返回类型,[通用型 参数],... ) - 蒋勇API支持库->系统处理 英文名称:jy_call 动态调用子程序。本命令为初级命令。命令参数表中最后一个参数可以被重复添加。 参数<1>的名称为“子程序指针或地址”,类型为“通用型(all)”。子程序指针或地址。 参数<2>的名称为“定义返回类型”,类型为“整数型(int)”,初始值为“1”。1#数据类型_整数型, #2数据类型_字节型, #3数据类型_短整数型, #4数据类型_长整数型, #5数据类型_小数型, #6数据类型_双精度小数型, 7#数据类型_逻辑型, 8#数据类型_日期时间型,9 #数据类型_子程序指针,10 #数据类型_文本型。 参数<3>的名称为“参数”,类型为“通用型(all)”,可以被省略。参数。 操作系统需求: Windows 调用格式: 〈整数型〉 调试显出 ([通用型数组/非数组 调试显出],... ) - 蒋勇API支持库->系统处理 英文名称:jy_Debugoutput 本命令仅在易程序的调试版本中被执行,支持字集节等。。本命令为初级命令。命令参数表中最后一个参数可以被重复添加。 参数<1>的名称为“调试显出”,类型为“通用型(all)”,可以被省略,提供参数数据时可以同时提供数组或非数组数据。输出的。 操作系统需求: Windows 调用格式: 〈对象〉 ocx_创建对象 (整数型 窗口句柄,文本型 数字签名,整数型 左边,整数型 顶边,整数型 宽度,整数型 高度,[逻辑型 是否带滚动条],[整数型变量 对象的窗口句柄]) - 蒋勇API支持库->系统处理 英文名称:jy_OCX ocx创建对象。本命令为初级命令。 参数<1>的名称为“窗口句柄”,类型为“整数型(int)”。窗口句柄。 参数<2>的名称为“数字签名”,类型为“文本型(text)”。如这个是个浏览器{F3D0D36F-23F8-4682-A195-74C92B03D4AF}。 参数<3>的名称为“左边”,类型为“整数型(int)”。左边。 参数<4>的名称为“顶边”,类型为“整数型(int)”。顶边。 参数<5>的名称为“宽度”,类型为“整数型(int)”。宽度。 参数<6>的名称为“高度”,类型为“整数型(int)”。窗口高度。 参数<7>的名称为“是否带滚动条”,类型为“逻辑型(bool)”,可以被省略。是否带滚动条。 参数<8>的名称为“对象的窗口句柄”,类型为“整数型(int)”,可以被省略,提供参数数据时只能提供变量。窗口句柄。 操作系统需求: Windows 调用格式: 〈无返回值〉 ocx_挂接事件 (整数型 事件编号,子程序指针 事件指针) - 蒋勇API支持库->系统处理 英文名称:jy_ocxgjsj ocx挂接事件同黑月返回事件句柄。本命令为初级命令。 参数<1>的名称为“事件编号”,类型为“整数型(int)”。事件编号同黑月。 参数<2>的名称为“事件指针”,类型为“子程序指针(SubPtr)”。事件指针。 操作系统需求: Windows 调用格式: 〈文本型〉 ocx_指针到文本 (整数型 一个文本指针) - 蒋勇API支持库->系统处理 英文名称:jy_inttostr ocx指针到文本。本命令为初级命令。 参数<1>的名称为“一个文本指针”,类型为“整数型(int)”。一个文本指针。 操作系统需求: Windows 调用格式: 〈文本型〉 取特定目录 ([整数型 ID]) - 蒋勇API支持库->系统处理 英文名称:jy_Takespecificdirectory 取特定目录返回目录。本命令为初级命令。 参数<1>的名称为“ID”,类型为“整数型(int)”,可以被省略。0我的桌面 2我的程序 5我的文档 6我的收藏夹 7我的启动 8我最近的文档 9我的发送到 11我的开始菜单 13我的音乐 14我的视频 16我的桌面 20系统字体 22开始菜单组 23程序组 24启动组 25桌面 31收藏夹 32我的浏览器临时目录 33我的Cookies 34我的历史记录 36Windows安装目录 37系统目录 38文件安装目录 39我的图片 40用户目录 41系统目录 46文档 47管理工具 48我的管理工具 53音乐 54图片 55视频。 操作系统需求: Windows 调用格式: 〈文本型〉 网页_http读文件 (文本型 网址,[逻辑型 是否post],[文本型 post]) - 蒋勇API支持库->系统处理 英文名称:jy_httpreadingfile 返回网页源码。本命令为初级命令。 参数<1>的名称为“网址”,类型为“文本型(text)”。网址。 参数<2>的名称为“是否post”,类型为“逻辑型(bool)”,可以被省略。向服务器要发送的内容。 参数<3>的名称为“post”,类型为“文本型(text)”,可以被省略。向服务器要发送的内容。 操作系统需求: Windows 调用格式: 〈文本型〉 网页_访问 ([文本型 地址],[逻辑型 post],[文本型 投递的附加数据]) - 蒋勇API支持库->系统处理 英文名称:jy_readhttp 返回网页数据。本命令为初级命令。 参数<1>的名称为“地址”,类型为“文本型(text)”,可以被省略。要访问的地址。 参数<2>的名称为“post”,类型为“逻辑型(bool)”,可以被省略。真为post假为get。 参数<3>的名称为“投递的附加数据”,类型为“文本型(text)”,可以被省略。post为真时,投递的附加数据。 操作系统需求: Windows 调用格式: 〈无返回值〉 javascript_添加 (文本型 javascript函数) - 蒋勇API支持库->系统处理 英文名称:javascript 添加javascript到易语言。本命令为初级命令。 参数<1>的名称为“javascript函数”,类型为“文本型(text)”。var demo=function(txt){if(1){ return ret;}else { return 10}}。 操作系统需求: Windows 调用格式: 〈文本型〉 javascript_调用 (文本型 javascript函数名,[通用型 参数],... ) - 蒋勇API支持库->系统处理 英文名称:jy_javarun 调用到易语言。本命令为初级命令。命令参数表中最后一个参数可以被重复添加。 参数<1>的名称为“javascript函数名”,类型为“文本型(text)”。demo。 参数<2>的名称为“参数”,类型为“通用型(all)”,可以被省略。参数1。 操作系统需求: Windows 调用格式: 〈无返回值〉 javascript_关闭 () - 蒋勇API支持库->系统处理 英文名称:jy_javaover 调用到易语言。本命令为初级命令。 操作系统需求: Windows 调用格式: 〈无返回值〉 监视热键 (子程序指针 子程序,整数型 键代码) - 蒋勇API支持库->系统处理 英文名称:jy_Monitoringhotkey 监视热键。本命令为初级命令。 参数<1>的名称为“子程序”,类型为“子程序指针(SubPtr)”。子程序。 参数<2>的名称为“键代码”,类型为“整数型(int)”。#F1。 操作系统需求: Windows 调用格式: 〈无返回值〉 窗口_关闭 (整数型 窗口句柄) - 蒋勇API支持库->系统处理 英文名称:jy_closewindow 不用了请关闭窗口。本命令为初级命令。 参数<1>的名称为“窗口句柄”,类型为“整数型(int)”。要关闭的窗口句柄。 操作系统需求: Windows 调用格式: 〈整数型〉 窗口_取句柄 ([文本型 标题],[文本型 类名]) - 蒋勇API支持库->系统处理 英文名称:jy_gethwnd 取得返回条件的窗口句柄100%OK。本命令为初级命令。 参数<1>的名称为“标题”,类型为“文本型(text)”,可以被省略。标题。 参数<2>的名称为“类名”,类型为“文本型(text)”,可以被省略。类名保存一致。 操作系统需求: Windows 调用格式: 〈逻辑型〉 apihook (文本型 库名,文本型 函数名,子程序指针 用户自定义子程序指针) - 蒋勇API支持库->系统处理 英文名称:jy_apihook apihook。本命令为初级命令。 参数<1>的名称为“库名”,类型为“文本型(text)”。user32.dll。 参数<2>的名称为“函数名”,类型为“文本型(text)”。FindWindow。 参数<3>的名称为“用户自定义子程序指针”,类型为“子程序指针(SubPtr)”。用户注意这个自己定义的子程序必须和原来api保持一样的参数。 操作系统需求: Windows 调用格式: 〈无返回值〉 apihook_还原 () - 蒋勇API支持库->系统处理 英文名称:jy_apihookhy 还原这个API。本命令为初级命令。 操作系统需求: Windows 调用格式: 〈整数型〉 apihook_取回API地址 () - 蒋勇API支持库->系统处理 英文名称:jy_apihookqhdz 取回API地址。本命令为初级命令。 操作系统需求: Windows 调用格式: 〈文本型〉 目录浏览 ([文本型 标题],[文本型 初使目录]) - 蒋勇API支持库->系统处理 英文名称:jy_CatalogBrowsing 同文件浏览。本命令为初级命令。 参数<1>的名称为“标题”,类型为“文本型(text)”,可以被省略。 参数<2>的名称为“初使目录”,类型为“文本型(text)”,可以被省略。 操作系统需求: Windows 调用格式: 〈文本型〉 取随机的数 (整数型 最大的) - 蒋勇API支持库->系统处理 英文名称:jy_randomNumber 自己代随机引擎比系统的好。本命令为初级命令。 参数<1>的名称为“最大的”,类型为“整数型(int)”。0到最大的。 操作系统需求: Windows 调用格式: 〈文本型〉 加密 (文本型 要加密的,[文本型 密码]) - 蒋勇API支持库->系统处理 英文名称:jy_jam 返回加密的。本命令为初级命令。 参数<1>的名称为“要加密的”,类型为“文本型(text)”。 参数<2>的名称为“密码”,类型为“文本型(text)”,可以被省略。 操作系统需求: Windows 调用格式: 〈文本型〉 解密 (文本型 要解密的,[文本型 密码]) - 蒋勇API支持库->系统处理 英文名称:jy_jem 返回解密的。本命令为初级命令。 参数<1>的名称为“要解密的”,类型为“文本型(text)”。 参数<2>的名称为“密码”,类型为“文本型(text)”,可以被省略。 操作系统需求: Windows 调用格式: 〈逻辑型〉 文件下载 (文本型 URL,文本型 本地路径名) - 蒋勇API支持库->系统处理 英文名称:jy_DownloadToFileA 文件下载。本命令为初级命令。 参数<1>的名称为“URL”,类型为“文本型(text)”。 参数<2>的名称为“本地路径名”,类型为“文本型(text)”。 操作系统需求: Windows 调用格式: 〈对象〉 javascript_添加对象 ([文本型 内部名称],[对象 对象]) - 蒋勇API支持库->系统处理 英文名称:jy_javascriptandobj 添加对象创建javascript返回对象。本命令为初级命令。 参数<1>的名称为“内部名称”,类型为“文本型(text)”,可以被省略。 参数<2>的名称为“对象”,类型为“对象(ComObject)”,可以被省略。 操作系统需求: Windows 调用格式: 〈文本型〉 翻译 ([文本型 要翻译的文本]) - 蒋勇API支持库->系统处理 英文名称:jy_Translation 自动识别中英翻译。本命令为初级命令。 参数<1>的名称为“要翻译的文本”,类型为“文本型(text)”,可以被省略。 操作系统需求: Windows 调用格式: 〈无返回值〉 读英语 ([文本型 eglish]) - 蒋勇API支持库->系统处理 英文名称:jy_readeglish 只支持英文的读音。本命令为初级命令。 参数<1>的名称为“eglish”,类型为“文本型(text)”,可以被省略。 操作系统需求: Windows 调用格式: 〈无返回值〉 播放媒体 ([整数型 HWND],[文本型 要播放的mp4]) - 蒋勇API支持库->系统处理 英文名称:jy_PLAY 支持播放所有音频文件。本命令为初级命令。 参数<1>的名称为“HWND”,类型为“整数型(int)”,可以被省略。 参数<2>的名称为“要播放的mp4”,类型为“文本型(text)”,可以被省略。 操作系统需求: Windows 调用格式: 〈字节集〉 数据_压缩 (字节集 要压缩的) - 蒋勇API支持库->系统处理 英文名称:jy_zipCompresseddata 返回压缩后的数据。本命令为初级命令。 参数<1>的名称为“要压缩的”,类型为“字节集(bin)”。字节集。 操作系统需求: Windows 调用格式: 〈字节集〉 数据_解压 (字节集 要解压的) - 蒋勇API支持库->系统处理 英文名称:jy_zipDecompresseddata 返回解压后的数据。本命令为初级命令。 参数<1>的名称为“要解压的”,类型为“字节集(bin)”。字节集。 操作系统需求: Windows 调用格式: 〈整数型〉 dll_注入 (整数型 HWND,字节集 dll) - 蒋勇API支持库->系统处理 英文名称:jy_dllzr dll注入成功返回模块句柄。本命令为初级命令。 参数<1>的名称为“HWND”,类型为“整数型(int)”。要注入程序的窗口句柄。 参数<2>的名称为“dll”,类型为“字节集(bin)”。你写的dll。 操作系统需求: Windows 调用格式: 〈整数型〉 dll_调用 (文本型 函数名,[通用型 参数]) - 蒋勇API支持库->系统处理 英文名称:jy_dllrun dll注入成功的调用返回调用的结果。本命令为初级命令。 参数<1>的名称为“函数名”,类型为“文本型(text)”。你公开的函数。 参数<2>的名称为“参数”,类型为“通用型(all)”,可以被省略。你写的函数必须参数保存一致。 操作系统需求: Windows 调用格式: 〈整数型〉 dll_内存加载 (字节集 DLL,[文本型 后缀]) - 蒋勇API支持库->系统处理 英文名称:jy_ncloaddll 返回模块地址。本命令为初级命令。 参数<1>的名称为“DLL”,类型为“字节集(bin)”。DLL字节集。 参数<2>的名称为“后缀”,类型为“文本型(text)”,可以被省略。在此设定后,在易IDE中声明API时DLL路径请用 Mem|+虚拟文件名 来表示。 操作系统需求: Windows 调用格式: 〈整数型〉 dll_pe加载 ([字节集 内存数据],文本型 dll函数名) - 蒋勇API支持库->系统处理 英文名称:jy_pe 返回地址,用调用子程序()。本命令为初级命令。 参数<1>的名称为“内存数据”,类型为“字节集(bin)”,可以被省略。内存中的数据空为已经加载了。 参数<2>的名称为“dll函数名”,类型为“文本型(text)”。dll函数名。 操作系统需求: Windows 调用格式: 〈逻辑型〉 dll_pe释放 () - 蒋勇API支持库->系统处理 英文名称:jy_pedelete 内存加载dllA释放。本命令为初级命令。 操作系统需求: Windows 调用格式: 〈逻辑型〉 dll_命令转向 (文本型 dll库名) - 蒋勇API支持库->系统处理 英文名称:jy_dllcallreturn 同DLL命令调用转向,我这个比核心的更强大。本命令为初级命令。 参数<1>的名称为“dll库名”,类型为“文本型(text)”。默认是系统的Dll。 操作系统需求: Windows 调用格式: 〈整数型〉 进程_取id (文本型 进程名) - 蒋勇API支持库->系统处理 英文名称:jy_jcmqid 返回id。本命令为初级命令。 参数<1>的名称为“进程名”,类型为“文本型(text)”。返回id。 操作系统需求: Windows 调用格式: 〈逻辑型〉 进程_结束 (文本型 进程名) - 蒋勇API支持库->系统处理 英文名称:jy_jcover 成功返回真。本命令为初级命令。 参数<1>的名称为“进程名”,类型为“文本型(text)”。 操作系统需求: Windows 调用格式: 〈无返回值〉 延时_超级 (整数型 时间) - 蒋勇API支持库->系统处理 英文名称:jy_sleep 同延时不卡死,不占用cpu。本命令为初级命令。 参数<1>的名称为“时间”,类型为“整数型(int)”。豪秒1000=1秒。 操作系统需求: Windows 调用格式: 〈无返回值〉 模拟按键 (整数型 键代码,[整数型 功能键1],[整数型 功能键2],[整数型 功能键3]) - 蒋勇API支持库->系统处理 英文名称:jy_mnanjian 模拟按键,参数2为空时不执行组合键。本命令为初级命令。 参数<1>的名称为“键代码”,类型为“整数型(int)”。 参数<2>的名称为“功能键1”,类型为“整数型(int)”,可以被省略。 参数<3>的名称为“功能键2”,类型为“整数型(int)”,可以被省略。 参数<4>的名称为“功能键3”,类型为“整数型(int)”,可以被省略。 操作系统需求: Windows
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值