在 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: $filename\n";