好的,我可以使用ilibjars路径将外部jar添加到我的代码中。现在,如何在我的代码中使用这些外部jar。假设我在那个jar中定义了一个对字符串进行操作的函数。如何使用它。使用context.getarchiveclasspaths(),我可以得到它的路径,但我不知道如何示例化该对象。
下面是我要导入的示例jar类
package replace;
public class ReplacingAcronyms {
public static String Replace(String abc){
String n;
n="This is trial";
return n;
}
}
public class wc_runner extends Configured implements Tool {
@Override
public int run(String[] args) throws Exception {
Configuration conf = getConf();
Job job = new Job(new Configuration());
job.setJarByClass(wc_runner.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
job.setMapperClass(wc_mapper.class);
job.setCombinerClass(wc_reducer.class);
job.setReducerClass(wc_reducer.class);
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
FileInputFormat.setInputPaths(job,new Path(args[0]));
FileOutputFormat.setOutputPath(job,new Path(args[1]));
return (job.waitForCompletion(true)?0:1);
}
public static void main(String[] args) throws Exception {
int exitCode = ToolRunner.run(new wc_runner(), args);
System.exit(exitCode);
}
}
运行的命令
[training@localhost Desktop]$ export HADOOP_CLASSPATH=file:///home/training/Desktop/replace.jar
[training@localhost Desktop]$ hadoop jar try1.jar wc_runner /user/training/MR/custom/trial1 /user/training/MR/custom/out -libjars ./replace.jar
错误
14/03/08 02:39:40 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
14/03/08 02:39:41 INFO input.FileInputFormat: Total input paths to process : 1
14/03/08 02:39:41 WARN snappy.LoadSnappy: Snappy native library is available
14/03/08 02:39:41 INFO snappy.LoadSnappy: Snappy native library loaded
14/03/08 02:39:41 INFO mapred.JobClient: Running job: job_201403080114_0021
14/03/08 02:39:42 INFO mapred.JobClient: map 0% reduce 0%
14/03/08 02:39:46 INFO mapred.JobClient: Task Id : attempt_201403080114_0021_m_000000_0, Status : FAILED
Error: java.lang.ClassNotFoundException: replace.ReplacingAcronyms
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190
1条答案
按热度按时间sr4lhrrt1#
在运行mapred作业之前,将包导入到mapred代码中,然后在hadoop\u classpath中添加jar文件的路径。
e、 g.在Map的java中
论编译
关于运行hadoop jar