要想让mapreduce程序引用第三方jar文件, 可以采用如下方式:
- 通过命令行参数传递jar文件, 如-libjars等;
- 直接在conf中设置, 如conf.set(“tmpjars”,*.jar), jar文件用逗号隔开;
- 利用分布式缓存, 如DistributedCache.addArchiveToClassPath(path, job), 此处的path必须是hdfs, 即自己讲jar上传到hdfs上, 然后将路径加入到分布式缓存中;
- 第三方jar文件和自己的程序打包到一个jar文件中, 程序通过job.getJar()将获得整个文件并将其传至hdfs上. (很笨重)
- 在每台机器的$HADOOP_HOME/lib目录中加入jar文件. (不推荐)
- 在工程目录下新建lib文件,把第三方jar包拷贝进去。
p.s. 如果通过上面方法1.或2., 需要注意Configuration问题, 需要通过getConf()函数获得, 而不要自己new一个对象.