MapReduce中学习键值对的概念

键值对是MapReduce作业接收执行的记录实体。 默认情况下,RecordReader使用TextInputFormat将数据转换为键值对。 这里我们将学习MapReduce中的键值对,Hadoop中如何使用InputSplit和RecordReader生成键值对。

1. 什么是Hadoop中的键值对?

Apache Hadoop主要用于数据分析。我们着眼于数据分析中的统计和逻辑技术来描述说明和评估数据。 Hadoop处理结构化,非结构化和半结构化数据。在Hadoop中,当数据模式是静态的时候,我们可以直接使用列而不是键和值,但是当数据模式不是静态时,我们将使用键和值。键和值不是数据的固有属性,但它们是由用户分析数据选择的。

MapReduce是提供数据处理的Hadoop的核心组件。 Hadoop MapReduce是一个用于轻松编写处理存储在Hadoop分布式文件系统(HDFS)中的大量结构化和非结构化数据的应用程序的软件框架。 MapReduce的工作过程分为两个阶段:Map阶段和Reduce阶段。每个阶段都有键值作为输入和输出。

2. 在MapReduce中生成键值对

现在让我们来了解Hadoop MapReduce中如何生成键值对?

在MapReduce过程中,在将数据传递给映射器之前,数据应首先转换为键值对,因为映射器只能理解键值对数据。

Hadoop MapReduce中的键值对如下生成:

InputSplit – 它是数据的逻辑表示。InputSplit显示要由单个映射器处理的数据。

RecordReader – 它与InputSplit进行通信,并将Split转换为适合映射器读取的键值对形式的记录。默认情况下,RecordReader使用TextInputFormat将数据转换为键值对。?RecordReader与InputSplit通信,直到文件读取未完成。

在MapReduce中,map函数处理某个键值对并发出一定数量的键值对,Reduce函数处理由相同键分组的值,并发出另一组键值对作为输出。 Map的输出类型应该与Reduce的输入类型匹配,如下所示:

Mapper:(K1,V1)→列表(K2,V2)

Reducer:{(K2,列表(V2)) – >列表(K3,V3)

3. 在Hadoop中生成的键值对的基础是什么?

在Hadoop中生成键值对取决于数据集和所需的输出。 通常,键值对在4个位置中指定:Map输入,Map输出,Reduce输入和Reduce输出。

Mapper输入

默认情况下,Mapper输入会将行偏移量作为关键字,行的内容将作为文本值。 通过使用自定义的InputFormat,我们可以修改它们。

Mapper输出

Mapper的基本职责是过滤数据并提供基于key的数据分组。

键 – 这是数据必须在reducer进行分组和汇总的字段/文本/对象。

Value?– 将由每个reducer方法处理的字段/文本/对象。

Reducer输入

Map的输出是reduce的输入,所以它与Map-Output相同。

Reducer输出

这取决于所需的输出。

4. MapReduce键值对例子

假设存储在HDFS中的文件的内容是?”?John is Mark Joey is John”?。 使用InputFormat,我们将定义这个文件将如何分割和读取。 默认情况下,RecordReader使用TextInputFormat将此文件转换为键值对。

键 – 它是文件内行开头的偏移量。

Value?– 这是该行的内容,不包括行结束符。

从上述文件的内容 –

键是0

Value 是 “John is Mark Joey is John”;

5. 结论

总之,我们可以说InputSplit和RecordReader通过使用TextInputFormat在Hadoop中生成Key-value对。 因此,Key是文件内行开头的字节偏移量,Value是除行结束符之外的行内容。

MapReduce中学习键值对的概念

发表评论

邮箱地址不会被公开。 必填项已用*标注

七 + 二 =

滚动到顶部