首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Mapper hadoop中获取文件名

在Mapper hadoop中获取文件名
EN

Stack Overflow用户
提问于 2019-02-15 16:42:58
回答 1查看 264关注 0票数 0

我的映射器组织如下:

代码语言:javascript
代码运行次数:0
运行
复制
#!/usr/bin/python

import os
import sys    

for line in sys.stdin:
    filename = os.environ["map_input_file"]
    print(filename)

我只是尝试在映射器中获取文件名,但是map_input_file上有一个错误,定义如下:

代码语言:javascript
代码运行次数:0
运行
复制
"File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/UserDict.py", line 23, in __getitem__
     raise KeyError(key)
KeyError: 'map_input_file'"

当我尝试不同的方法时,我对可能的问题感到困惑,例如:

代码语言:javascript
代码运行次数:0
运行
复制
try:
    filename = os.environ["mapreduce.map.input.file"]
except KeyError:
    filename = os.environ["map.input.file"]

代码语言:javascript
代码运行次数:0
运行
复制
try:
    filename = os.environ["mapreduce_map_input_file"]
except KeyError:
    filename = os.environ["map_input_file"]

它总是引发一个KeyError,并且不能导入文件名。

任何关于如何在映射器中获取文件名的解决方案都将非常受欢迎。

作为参考,我使用cat text.txt | mapper.py管道在本地运行此代码。在集群上运行它,我的最终目标,也不会工作,可能是因为同样的错误。

EN

回答 1

Stack Overflow用户

发布于 2019-02-15 22:54:07

@Ilko实际上,尝试在集群上运行它会给我以下错误:

代码语言:javascript
代码运行次数:0
运行
复制
INFO mapreduce.Job: Task Id : attempt_1550240953895_0001_m_000005_2, Status : FAILED
Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1
    at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:325)
    at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:538)
    at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:130)
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61)
    at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:455)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:344)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:175)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1844)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:169)

19/02/15 14:41:47 INFO mapreduce.Job:  map 6% reduce 0%
19/02/15 14:41:48 INFO mapreduce.Job:  map 100% reduce 100%
19/02/15 14:41:49 INFO mapreduce.Job: Job job_1550240953895_0001 failed with state FAILED due to: Task failed task_1550240953895_0001_m_000008
Job failed as tasks failed. failedMaps:1 failedReduces:0

这对像我这样没有经验的人真的没什么帮助哈哈

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54705432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档