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

使用Hadoop管道在Hadoop mapper中获取文件名

景靖琪
2023-03-14

如何获取在hadoop管道中的hadoop映射器中执行的输入文件名

我可以很容易地在基于java的map reducer中获得文件名,比如

FileSplit FileSplit=(FileSplit)上下文。getInputSplit();

但是我怎么才能进C;

请帮帮我

谢谢


共有3个答案

曹恩
2023-03-14

通过分析mapreduce\u map\u input\u file(新建)或 map\u input\u file (弃用)环境变量,可以获得地图输入文件名。

注意:
这两个环境变量区分大小写,所有字母都应小写。

雍志文
2023-03-14

如果您在Python中使用HADOOP 2. x:

file_name = os.environ['mapreduce_map_input_file']
钦侯林
2023-03-14

对于流式处理/管道作业,作业配置被序列化以处理环境变量。

定义输入文件的作业配置属性名为map.input.file。启动C程序的PipeMapRed类负责此序列化(confiuremethod,第151行),并确保作业conf属性名称被转义(addJobConfTo环境method line 206/266)-意味着所有非a-Za-z0-9字符都被替换为下划线(secEnvVarNamemethod,第276/284行)-因此您在c程序中寻找的实际环境变量将被命名为map_input_file

我是,不是c程序员,所以我不能告诉你如何获取环境变量,但我相信它足够简单。

 类似资料:
  • 我想使用 hudson 的管道插件在内联管道脚本中获取当前时间戳。用于设置生成显示名称。 使用的内联groovy脚本: 控制台上的错误:

  • 基于Spark-Load CSV文件作为数据文件? 我知道可以使用来完成,但理想情况下我不必这样做。 更新信息 看来我得用反勾号通过这条路。

  • 问题内容: 我想读取一个远程图像并显示它。我可以保存文件,但无法正确显示代码。理想情况下,我只想尽管正确地传递文件但不进行处理- 不确定是否需要tmp文件步骤。此代码不显示任何内容-没有错误。我也尝试过res.pipe(response)。 问题答案: 好吧,我仍然想知道如何进行上述工作,但是我通过请求模块解决了我的问题!

  • 我对hadoop很陌生,请你帮忙。我正在执行将文件从一个目录消化到另一个目录的过程。我使用的以下comand: Blockquote hadoop fs-copyfromlocal./tmp/text.txt./tmp/HarSourceFolder2 有人能帮我吗?

  • 我是hadoop新手,目前正在hadoop上工作。我有一个小问题。 我在输入文件夹中有大约10个文件,我需要将其传递给我的地图缩减程序。我希望我的映射器中的文件名称,因为我的文件名称包含创建此文件的时间。我看到人们使用FileSplit在映射器中获取文件名称。如果假设我的输入文件包含数百万行,那么每次调用映射器代码时,它都会获取文件名称,然后从文件中提取时间,对于同一个文件来说,这显然是一件重复耗

  • 传递参数 链接管道 我们可以将多个管道连接在一起,以便在一个表达式中使用多个管道。