我一直在努力学习hadoop。在我看到的示例中(例如单词计数示例(,根本没有使用map函数的关键参数。map函数只使用对的值部分。因此,关键参数似乎是不必要的,但它不应该是。我在这里缺少了什么?你能给我举一个使用关键参数的地图函数的例子吗?
感谢
要了解key的使用,您需要了解Hadoop中可用的各种输入格式。
-
文本输入格式-纯文本文件的InputFormat。文件被分成几行。换行或回车用于表示换行结束。键是文件中的位置,值是文本行。。
-
NLineInputFormat-NLineInputFormat,将N行输入拆分为一个拆分。在许多"令人愉快"的并行应用程序中,每个进程/映射器处理相同的输入文件,但计算由不同的参数控制。(称为"参数扫描"(。实现这一点的一种方法是指定一组参数(每行一组(作为控制文件中的输入(这是map reduce应用程序的输入路径,其中作为输入数据集是通过JobConf中的配置变量指定的(。NLineInputFormat可用于此类应用程序,它拆分输入文件,默认情况下,一行作为值提供给一个map任务,关键是偏移。即(k,v(是(LongWritable,Text(。位置提示将覆盖整个映射集群。
-
KeyValue文本输入格式-纯文本文件的InputFormat。文件被分成几行。换行或回车用于表示换行结束。E每行由一个分隔符字节划分为键和值部分。如果不存在这样的字节,键将是整行,值将为空。
-
序列文件为二进制输入格式-InputFormat读取二进制(原始(格式的SequenceFiles中的键和值。
-
序列文件为文本输入格式-该类类似于SequenceFileInputFormat,不同之处在于它生成用于转换输入键和值的SequenceFileAsTextRecordReader通过调用toString((方法将其转换为String形式。
在wordcount示例中:因为我们想统计文件中每个单词的出现次数。我们使用了以下方法:
在映射器-
Key
是文本文件的offset
。
文本文件中的Value
-Line
。
例如。file.txt
Hi I love Hadoop.
I code in Java.
此处
Key - 0 , value - Hi I love Hadoop.
Key - 17 , value - I code in Java.
(key - 17 is offset from start of file.)
基本上,键的偏移量是默认的,我们不需要它,尤其是在Wordcount
中。
现在,稍后的逻辑是,我想你会得到这里和更多可用的链接。
以防万一:
在Reducer
中
Key
就是Word
Value
是1,这是它的count.