我一直在努力学习hadoop。在我看到的例子中(例如单词计数示例),根本没有使用map函数的关键参数。 map函数仅使用该对的值部分。所以似乎关键参数是不必要的,但它不应该。我在这里错过了什么?你能给我一些使用关键参数的示例地图函数吗?
由于
答案 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
Key
是Word
Value
为1,即count.
答案 1 :(得分:0)
要了解密钥的使用,您需要了解Hadoop中可用的各种输入格式。
TextInputFormat - 纯文本文件的InputFormat。文件分为几行。换行或回车用于发出行尾信号。 键是文件中的位置,值是文本行..
NLineInputFormat- NLineInputFormat将N行输入拆分为一个拆分。 在许多“愉快”并行应用程序中,每个进程/映射器处理相同的输入文件,但计算由不同的参数控制。 (简称“参数扫描”)。实现此目的的一种方法是在控制文件中指定一组参数(每行一组)作为输入(这是map-reduce应用程序的输入路径,其中输入数据集是通过配置变量指定的JobConf)。 NLineInputFormat可用于此类应用程序,这些应用程序将输入文件拆分为默认情况下,一行作为值提供给一个map任务,key是偏移量。即(k,v)是(LongWritable,Text)。 位置提示将跨越整个映射群集。
KeyValue TextInputFormat - 纯文本文件的InputFormat。文件分为几行。 换行或回车用于发出行尾信号。 Ë ach行按分隔符字节分为键和值部分。 如果不存在这样的字节,则键将是整行,值将为空。
SequenceFileAsBinaryInputFormat- InputFormat读取键,来自SequenceFiles的二进制(原始)格式的值。
SequenceFileAsTextInputFormat- 此类与SequenceFileInputFormat类似,不同之处在于它生成SequenceFileAsTextRecordReader,用于转换输入键和值 通过调用toString()方法来获取它们的String形式。