当前位置: 首页 > 知识库问答 >
问题:

哈道夫 - 流式传输时的映射功能键

史磊
2023-03-14

我是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中获得键(行号)?

提前感谢!!

共有1个答案

田兴怀
2023-03-14

在这里,您没有使用任何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

  • 问题内容: 我在bash脚本中具有简单的功能,我想将stdout作为输入传递给它。 我想以这种方式使用它。 当然,我使用了冗余函数echo和printf来简化问题,但是您明白了。现在,我收到一个“未找到”错误,我认为这意味着我的参数定界是错误的(“ $ 1”部分)。有什么建议么? 最初,jc_hms函数的用法如下: 但我想将结果存储在变量中,以便在将其发送到串行端口之前先进行进一步处理。 编辑:所