我是Hadoop的新手,我遇到了一些我无法用Google找到的东西。
在Java版本的“hello world”Hadoop程序中,mapper函数接受一个键、值对,这符合我对MapReduce工作方式的理解。根据我的理解,在字数统计示例中,关键是行号,值是文本本身的行:
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
//Tokenize the line and print out token,1 for each
}
然而,在同一程序的python流示例中,python映射器似乎没有读取密钥:
#!/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 mapper似乎只能从stdin中读取值部分。我怎样才能在python mapper中获得键(行号)?
提前感谢!!
在这里,您没有使用任何hadoop框架函数,例如map,它将字节偏移量作为行号作为第一个参数(框架库函数在调用map函数时传递此值)。由于您正在从标准输入读取,因此您必须编写自定义实现来打印行号。类似这样的东西如何在python中的文件中获取字节偏移量
希望这有帮助
问题内容: 我是Hadoop的新手。我想从mapper类的map函数中的main函数(Java程序)访问命令行参数。请提出方法。 问题答案: Hadoop 0.20引入了新的MR API,新的(oahmapreduce软件包)和旧的MR API(oahmapred)之间没有太多功能差异,只是可以使用新API在映射器和化简器中提取数据。提到Arnon的是旧的API。 查看本文以使用新旧API传递参数
问题内容: 我有一种情况,我需要从Node.js / Express RESTful API返回一个很大的对象,并将其转换为JSON字符串。 但是,这似乎无法很好地扩展。具体来说,它在连接1-2个客户端的测试机上运行良好,但我怀疑当许多客户端同时请求大型JSON对象时,此操作可能会浪费CPU和内存使用率。 我四处寻找一个异步JSON库,但是我发现的唯一一个库似乎有问题(特别是,我收到了[Range
问题内容: 这段代码有效(取自Javadoc): 这是无法编译的: IDEA告诉我,“ lambda表达式中的返回类型字符串不兼容”。 为什么呢 以及如何解决? 问题答案: 创建一个,而不是一个。因此,在将映射到对象时,您需要调用而不仅仅是。 这应该按预期工作: 您也可以这样写:
我有一个实体,看起来像这样: 输入数据是一个
问题内容: 我的用例如下: 我有一个仅地图的mapreduce作业,该作业需要一个输入文件,进行了大量的解析和调整,然后再写回。但是,某些行的格式可能正确也可能不正确,如果是这样,我想将原始行写入单独的文件中。 看来,执行此操作的一种方法是将文件名添加到我正在打印的行的前面,并使用multipleOutputFormat参数。例如,如果我最初有: 我可以改为: 此解决方案唯一的问题是我不希望fil
我正在尝试使用流将一个列表映射到另一个列表。 原始列表的某些元素无法映射。也就是说,映射函数可能无法找到合适的新值。 null 对更好的方法的建议?或者我应该把溪流全部挖开,用好的旧循环?