gpt4 book ai didi

java - 尝试在 Hadoop 中开始作业时出错

转载 作者:可可西里 更新时间:2023-11-01 16:34:09 25 4
gpt4 key购买 nike

我一直在尝试将 pagerank 算法与 hadoop 一起使用,但我在作业初始化方面遇到了一些问题。

当我尝试使用 Job 类进行初始化时,我在编译时遇到以下错误:

线程“main”中的异常 java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 在 org.apache.hadoop.mapreduce.Job.(Job.java:89) 在 Pagerank.main(Pagerank.java:244)

代码如下:

Job job;
job = new Job();
job.setJarByClass(Pagerank.class); // In what class are our map/reduce functions for this job found?
job.setMapperClass(PRMap.class); // What is our map function for this job?
job.setReducerClass(PRReduce.class); // What is our reduce function for this job?

job.setOutputKeyClass(Text.class); // What are the (hadoop.io compliant) datatype for our
job.setOutputValueClass(Text.class); // reducer output's key-value pairs?
job.setInputFormatClass(TextInputFormat.class); // How will the mapper distinguish (key value) record inputs?
FileInputFormat.addInputPath(job, new Path(args[0])); // First command line argument
FileOutputFormat.setOutputPath(job, new Path("temp0"));
job.waitForCompletion(true);

当我尝试使用 JobConf 类进行初始化时,我收到有关所用某些方法的争论的错误。

代码如下:

     JobConf conf = new JobConf(Pagerank.class);
conf.setJobName("pagerank");

conf.setOutputKeyClass(Text.class);
conf.setOutputValueClass(Text.class);

conf.setMapperClass(PRMap.class);
conf.setReducerClass(PRReduce.class);

conf.setInputFormat(TextInputFormat.class);
conf.setOutputFormat(TextOutputFormat.class);

FileInputFormat.setInputPaths(conf, new Path(args[0]));
FileOutputFormat.setOutputPath(conf, new Path(args[1]));

JobClient.runJob(conf);

根据错误:

类 JobConf 中的方法 setMapperClass 不能应用于给定的类型;

必需:类?扩展映射器

找到:类 PRMap

原因:实参Class PRMap无法转换为Class ?extends Mapper通过方法调用转换

即使我编写的 PRMap 类遵循 Hadoop 的 Map 函数标准,我似乎也无法将 PRMap.class 作为参数传递给 setMapperClass

public static class PRMap extends Mapper<LongWritable, Text, Text, Text>
{ ... }

对这两种方法有什么建议吗?

最佳答案

尝试把包含org.apache.commons.Logging.LogFactory jar的jar放到每台机器的HadoopHome的lib目录下,重启集群。

或者您可以尝试使用 libjars 选项通过命令行添加 jar。如:

hadoop jar myjar.jar package.classname -libjars mypath/common-loggings.jar

关于java - 尝试在 Hadoop 中开始作业时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14763655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com