如何在映射器中获取输入文件的名称?我有多个输入文件存储在输入目录中,每个映射器可能会读取不同的文件,我需要知道映射器已读取的文件.
在Java中编写程序时,我能够使用FileSplit在mapper类中找到输入文件的名称.
当我用Python编写程序时(使用流式传输?),有相应的方法吗?
我在apache上的hadoop流文档中找到了以下内容:
请参阅配置参数.在执行流作业期间,转换"映射"参数的名称.点(.)变为下划线(_).例如,mapred.job.id变为mapred_job_id,mapred.jar变为mapred_jar.在您的代码中,使用带下划线的参数名称.
但我仍然无法理解如何在我的mapper中使用它.
任何帮助都非常感谢.
谢谢
我正在学习弹性mapreduce,并开始使用Amazon Tutorial Section中提供的Word Splitter示例(代码如下所示).该示例为所提供的所有输入文档中的所有单词生成字数.
但是我希望通过文件名获得Word Counts的输出,即仅在一个特定文档中的单词计数.由于字数的python代码从stdin获取输入,我如何判断哪个输入行来自哪个文档?
谢谢.
#!/usr/bin/python
import sys
import re
def main(argv):
line = sys.stdin.readline()
pattern = re.compile("[a-zA-Z][a-zA-Z0-9]*")
try:
while line:
for word in pattern.findall(line):
print "LongValueSum:" + word.lower() + "\t" + "1"
line = sys.stdin.readline()
except "end of file":
return None
if __name__ == "__main__":
main(sys.argv)
Run Code Online (Sandbox Code Playgroud)