我有两个1 MB的文本文件,每个文件存储在HDFS中作为MapReduce程序的输入。在下一行中,我们认为map()的输入对是。
class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {
这里有什么是LongWritable密钥? MapReduce如何假设?输入文件中的每行文本是否都有一个键或单个键是否为文件中的完整文本(即一次所有行)?
答案 0 :(得分:8)
1-这里的LongWritable密钥是该行的offset
,表示文件中该行的position
和行号not
。这两者之间存在a lot
的差异。
2- MapReduce框架为not assumed
。您在MR工作中使用的InputFormat
职责是决定它。默认值为TextInputFormat
,它将行的字节偏移量作为键,如您的情况。
3-嗯,这又取决于你的InputFormat。如果您使用的是TextInputFormat,那么每一行都将被视为以其偏移量为键的值。但是你可以拥有自己的自定义InputFormat,它可能只为你提供整个文件的一个键和该文件的所有行作为值。
答案 1 :(得分:-1)
是行的字节偏移或者可以说行号