hadoop映射器中对象类型的键

use*_*157 4 java hadoop mapreduce

hadoop的新手,并试图从这里了解mapreduce wordcount示例代码.

文档中的映射器是 -

Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT>
Run Code Online (Sandbox Code Playgroud)

我在mapreduce字数统计示例中看到地图代码如下

public void map(Object key, Text value, Context context)
Run Code Online (Sandbox Code Playgroud)

问题 - Object类型的这个键有什么意义?如果映射器的输入是文本文档,我假设其中的值是hadoop已经分区并存储在HDFS中的文本块(64MB或128MB). 更一般地说,这个输入键Keyin对地图代码有什么用?

任何指针都将非常感激

Ram*_*ana 8

InputFormat描述了Map-Reduce作业的输入规范.默认情况下,hadoop使用TextInputFormat继承FileInputFormat来处理输入文件.

我们还可以指定要在客户端或驱动程序代码中使用的输入格式:

job.setInputFormatClass(SomeInputFormat.class);
Run Code Online (Sandbox Code Playgroud)

对于TextInputFormat,文件被分成几行.键是文件中的位置,值是文本行.

public void map(Object key, Text value, Context context),是行偏移量,是实际文本.

请查看TextInputFormat API https://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapreduce/lib/input/TextInputFormat.html

默认情况下,关键是LongWritable类型和值是类型TextTextInputFormat.在你的榜样,对象类型在的地方规定LongWritable,因为它是兼容的.您也可以使用LongWritable类型代替Object