在Hadoop上的Perl中,如何获取映射器正在处理的文件的文件



在Hadoop中,我正在传递一个包含各种文件的目录/*。文件的名称对于数据处理很重要。我需要Perl中的这个解决方案。

我相信Java等价物是job.get("map.input.file")。我找了大约 45 分钟,找不到 Perl 解决方案。

谢谢凯文

所有作业配置变量都序列化到流程环境中,并使用 StreamUtils.safeEnvVarName 方法中的某些代码使属性名称变得"安全"。

基本上,此方法会将属性名称中的任何非 [0-9A-Za-z] 字符替换为下划线,因此map.input.file应该可用作名为 map_input_file 的环境变量

为了用代码总结Chris很好地解释的内容,您需要以下两行来获取输入文件名并将其打印到stderr:

my $filename = $ENV{"map_input_file"};
print STDERR "Input filename is: $filenamen";

最新更新