我将在 Hadoop 2.9.0 上运行我的 map reduce 项目。我在我的项目中使用 xml-rpc 包如下:
import org.apache.xmlrpc.*;
我将其他 jar 放入 lib 文件夹中,当我在 Hadoop 中运行我的项目 jar 时,它显示此错误:
Error: java.lang.ClassNotFoundException: org.apache.xmlrpc.XmlRpcClient
我执行了这个命令:
bin/hadoop jar MRV.jar SumMR /user/hadoop/input /user/hadoop/output -libjars lib/xmlrpc-2.0.1.jar: lib/commons-codec-1.10.jar
如何在不出现
ClassNotFoundException
错误的情况下执行此命令?
最佳答案
私有(private)静态无效 addJarToDistributedCache
(类classToAdd,配置conf)
抛出 IOException {
// Retrieve jar file for class2Add
String jar = classToAdd.getProtectionDomain().
getCodeSource().getLocation().
getPath();
File jarFile = new File(jar);
// Declare new HDFS location
Path hdfsJar = new Path("/user/hadoopi/lib/"
+ jarFile.getName());
// Mount HDFS
FileSystem hdfs = FileSystem.get(conf);
// Copy (override) jar file to HDFS
hdfs.copyFromLocalFile(false, true,
new Path(jar), hdfsJar);
// Add jar to distributed classPath
DistributedCache.addFileToClassPath(hdfsJar, conf);
}
关于java - 如何使用外部 jar 运行 hadoop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53126365/