在Hadoop中将相同的键传递给映射器时会发生什么

在Hadoop中将相同的键传递给映射器时会发生什么,hadoop,mapreduce,Hadoop,Mapreduce,在Hadoop Map Reduce框架中,数据作为键/值对传递给映射器的意义是什么。我理解,键/值对在传递给约简器时具有重要意义,因为它们满足来自映射器的数据的分区。属于同一个键的值作为列表从映射器转到reducer阶段。但是在mapper阶段之前,这些键是如何使用的呢?属于同一个键的值会发生什么变化?如果我们不定义自定义输入格式,我假定Hadoop将输入文件中的记录编号作为键,并将文本行作为mapper函数中的值。但是,如果我们决定实现一个自定义输入格式,则会有一个自定义的键选择,并且可能会

在Hadoop Map Reduce框架中,数据作为键/值对传递给映射器的意义是什么。我理解,键/值对在传递给约简器时具有重要意义,因为它们满足来自映射器的数据的分区。属于同一个键的值作为列表从映射器转到reducer阶段。但是在mapper阶段之前,这些键是如何使用的呢?属于同一个键的值会发生什么变化?如果我们不定义自定义输入格式,我假定Hadoop将输入文件中的记录编号作为键,并将文本行作为mapper函数中的值。但是,如果我们决定实现一个自定义输入格式,则会有一个自定义的键选择,并且可能会有对应于同一个键的值


在mapper阶段如何处理这种现象?映射程序是否忽略重复记录并将其视为单独的记录,还是只为每个键选择一条记录?

输入拆分是由 单一地图。每个贴图处理一个单独的分割。每个拆分被划分为记录,并且 映射依次处理每个记录(一个键值对)。


所以映射器将具有相同键的记录视为单独的记录

在默认的输入格式中,不同的块将有各自的记录编号,并且由于记录编号是键,因此每个映射器的记录编号都是唯一的。但是,如果自定义输入格式的记录编号不是键,会发生什么情况?@Abhishek Mapper将分别处理每个键值对。RecordReader生成的每个键值对将由mapper类中的用户定义映射方法独立处理。映射器将发出新的键值对。映射器发出的所有相同的键都将在一个减缩器中减少。我同意。但是,在地图中读取键值对的意义是什么?我们可以有一个实体而不是两个实体。将完整记录作为单个实体发送到地图。为什么在输入映射时将其分解为键值对呢。对于减速机,我理解它的重要性,但对于映射器输入,它仍然没有意义。当然,密钥在映射器中是有用的。考虑到想要过滤不是密钥X的记录的情况。那么为什么不将密钥作为字段合并而不是将它们分开呢?因为MapReduce中的键和值都可以是任何可写的,所以在许多情况下,可能没有任何合理的方法将它们组合成一个可写类型。正如您自己所经历的,在某些情况下,没有有用的逻辑键,或者逻辑键是值的一部分,在这种情况下,映射的键可以被忽略。@AlexA。我同意密钥在过滤记录时可能很有用。