不使用Hadoop映射函数的“key”参数

时间:2015-07-27 21:18:39

标签: hadoop mapreduce

我一直在努力学习hadoop。在我看到的例子中(例如单词计数示例),根本没有使用map函数的关键参数。 map函数仅使用该对的值部分。所以似乎关键参数是不必要的,但它不应该。我在这里错过了什么?你能给我一些使用关键参数的示例地图函数吗?

由于

2 个答案:

答案 0 :(得分:1)

在wordcount示例中:我们想要计算文件中每个单词的出现次数。 我们使用了以下方法:

在Mapper中 -

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

现在后来的逻辑是,我猜你会得到here以及更多可用的链接。

以防万一:

Reducer

KeyWord Value为1,即count.

答案 1 :(得分:0)

要了解密钥的使用,您需要了解Hadoop中可用的各种输入格式。

  1. TextInputFormat - 纯文本文件的InputFormat。文件分为几行。换行或回车用于发出行尾信号。 键是文件中的位置,值是文本行..

  2. NLineInputFormat- NLineInputFormat将N行输入拆分为一个拆分。 在许多“愉快”并行应用程序中,每个进程/映射器处理相同的输入文件,但计算由不同的参数控制。 (简称“参数扫描”)。实现此目的的一种方法是在控制文件中指定一组参数(每行一组)作为输入(这是map-reduce应用程序的输入路径,其中输入数据集是通过配置变量指定的JobConf)。 NLineInputFormat可用于此类应用程序,这些应用程序将输入文件拆分为默认情况下,一行作为值提供给一个map任务,key是偏移量。即(k,v)是(LongWritable,Text)。 位置提示将跨越整个映射群集。

  3. KeyValue TextInputFormat - 纯文本文件的InputFormat。文件分为几行。 换行或回车用于发出行尾信号。 Ë ach行按分隔符字节分为键和值部分。 如果不存在这样的字节,则键将是整行,值将为空。

  4. SequenceFileAsBinaryInputFormat- InputFormat读取键,来自SequenceFiles的二进制(原始)格式的值。

  5. SequenceFileAsTextInputFormat- 此类与SequenceFileInputFormat类似,不同之处在于它生成SequenceFileAsTextRecordReader,用于转换输入键和值 通过调用toString()方法来获取它们的String形式。