gpt4 book ai didi

java - job.setOutputKeyClass 和 job.setOutputReduceClass 指的是哪里?

转载 作者:太空狗 更新时间:2023-10-29 22:50:54 26 4
gpt4 key购买 nike

我以为他们指的是 Reducer 但在我的程序中我有

public static class MyMapper extends
Mapper< LongWritable, Text, Text, Text >

public static class MyReducer extends
Reducer< Text, Text, NullWritable, Text >

如果我有

job.setOutputKeyClass( NullWritable.class );

job.setOutputValueClass( Text.class );

我得到以下异常

Type mismatch in key from map: expected org.apache.hadoop.io.NullWritable, recieved org.apache.hadoop.io.Text

但如果我有

job.setOutputKeyClass( Text.class );

没有问题。

是我的代码有问题还是因为 NullWritable 或其他原因而发生这种情况?

我还必须使用 job.setInputFormatClassjob.setOutputFormatClass ?因为我的程序没有它们也能正常运行。

最佳答案

调用 job.setOutputKeyClass( NullWritable.class ); 会将预期的类型设置为 map 和 reduce 阶段的输出。

如果您的 Mapper 发出的类型与 Reducer 不同,您可以使用 JobConfsetMapOutputKeyClass()setMapOutputValueClass( ) 方法。这些隐式设置 Reducer 期望的输入类型。

(来源:Yahoo Developer Tutorial)

关于你的第二个问题,默认的InputFormatTextInputFormat。这将每个输入文件的每一行都视为一个单独的记录,并且不执行解析。如果您需要以不同的格式处理您的输入,您可以调用这些方法,下面是一些示例:

InputFormat             | Description                                      | Key                                      | Value
--------------------------------------------------------------------------------------------------------------------------------------------------------
TextInputFormat | Default format; reads lines of text files | The byte offset of the line | The line contents
KeyValueInputFormat | Parses lines into key, val pairs | Everything up to the first tab character | The remainder of the line
SequenceFileInputFormat | A Hadoop-specific high-performance binary format | user-defined | user-defined

OutputFormat 的默认实例是 TextOutputFormat,它在文本文件的各个行上写入(键,值)对。下面是一些示例:

OutputFormat             | Description
---------------------------------------------------------------------------------------------------------
TextOutputFormat | Default; writes lines in "key \t value" form
SequenceFileOutputFormat | Writes binary files suitable for reading into subsequent MapReduce jobs
NullOutputFormat | Disregards its inputs

(来源:Other Yahoo Developer Tutorial)

关于java - job.setOutputKeyClass 和 job.setOutputReduceClass 指的是哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14225205/

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