的Hadoop - 地图功能键流

问题描述:

时,我是很新,Hadoop和我遇到一些我无法了解与谷歌。的Hadoop - 地图功能键流

在字数为“HelloWorld”Hadoop程序的Java版本中,mapper函数接受一个与我对MapReduce工作原理的理解一致的键值对。从我的理解,在字数例子,关键是行号和值是文本本身的行:

public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { 
    //Tokenize the line and print out token,1 for each 
} 

然而,在蟒蛇流例如,对于同一个节目,蟒蛇映射器没有按”吨似乎读密钥:

#!/usr/bin/env python 
import sys 
# input comes from STDIN (standard input) 
for line in sys.stdin: 
    # remove leading and trailing whitespace 
    line = line.strip() 
    # split the line into words 
    words = line.split() 
    for word in words: 
     print '%s\t%s' % (word, 1) 

似乎python映射只能读取stdin的值部分。我怎样才能得到python mapper中的关键字(行号)呢?

在此先感谢!

在这里你没有使用像地图的任何Hadoop框架函数获取字节作为行号作为第一个参数偏移(框架库函数调用地图功能时,通过此值)。由于您正在从标准输入中读取数据,因此您必须编写自定义实施来打印行号。像这样的东西 How to get byte offset in a file in python

希望这会有所帮助