java - 使用hadoop作业的输出作为另一个的输入

标签 java hadoop mapreduce hdfs

使用一个M / R作业的输出作为另一输入的作业时遇到问题。根据post和许多其他在线资源,一种方法是创建一个job1,然后创建一个job2。但是,当我执行此操作时,出现此错误:

Error: java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.hadoop.io.LongWritable

我唯一使用LongWritable作为类的时间是作为映射器的键。我记得这需要保持这样,因为这是输入文件中的偏移量。当我更改签名时,应为Text,如下所示:
public class ErrorMapperCombiner extends Mapper<Text, Text, Text, IntWritable>

我收到此错误:
Error: java.lang.ClassCastException: org.apache.hadoop.io.IntWritable cannot be cast to org.apache.hadoop.io.Text

那么,如何将一个M / R作业的输出用作另一个的输入?

我在“runner”类中也使用了它来链接:
job1.setOutputFormatClass(SequenceFileOutputFormat.class);

job1.setOutputKeyClass(Text.class);
job1.setOutputValueClass(IntWritable.class);

.....

job2.setInputFormatClass(SequenceFileInputFormat.class);

最佳答案

我两次设置了该值。 (例如。)

job1.setOutputFormatClass(TextOutputFormat.class);
....
job1.setOutputFormatClass(SequenceFileOutputFormat.class);

尽管SequenceFileOutputFormat在后面,所以我认为将使用该值。但尽管如此,现在可以使用。

关于java - 使用hadoop作业的输出作为另一个的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19994120/

相关文章:

java - 确保 JAVA_HOME 设置正确

Java添加删除集合的方法

java - FlatMapFunction 没有定义serialversionUid

hadoop - MapReduce 作业卡在已接受状态

hadoop - 要求澄清一些 HDFS 概念

JAVA : ZK framework Sorting and Manual Paging

hadoop - 如何将袋装在 pig 身上

hadoop - 如何在级联的MapReduceFlow中处理异常

javascript - 通过正则表达式匹配计算 MongoDB 中的记录

hadoop - 为什么我们需要 Hadoop 无密码 ssh?