当前位置: 首页 > 面试题库 >

python中的Hadoop Streaming Job失败错误

严瑞
2023-03-14
问题内容

通过本指南,我已经成功运行了示例练习。但是在运行mapreduce作业时,我 从日志文件中收到以下错误错误
ERROR streaming.StreamJob: Job not Successful! 10/12/16 17:13:38 INFO streaming.StreamJob: killJob... Streaming Job Failed!

java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 2
at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:311)
at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:545)
at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:132)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:57)
at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
at org.apache.hadoop.mapred.Child.main(Child.java:170)

映射器

import sys

i=0

for line in sys.stdin:
    i+=1
    count={}
    for word in line.strip().split():
        count[word]=count.get(word,0)+1
    for word,weight in count.items():
        print '%s\t%s:%s' % (word,str(i),str(weight))

Reducer.py

import sys

keymap={}
o_tweet="2323"
id_list=[]
for line in sys.stdin:
    tweet,tw=line.strip().split()
    #print tweet,o_tweet,tweet_id,id_list
    tweet_id,w=tw.split(':')
    w=int(w)
    if tweet.__eq__(o_tweet):
        for i,wt in id_list:
            print '%s:%s\t%s' % (tweet_id,i,str(w+wt))
        id_list.append((tweet_id,w))
    else:
        id_list=[(tweet_id,w)]
        o_tweet=tweet

[edit]命令运行作业:

hadoop@ubuntu:/usr/local/hadoop$ bin/hadoop jar contrib/streaming/hadoop-0.20.0-streaming.jar -file /home/hadoop/mapper.py -mapper /home/hadoop/mapper.py -file /home/hadoop/reducer.py -reducer /home/hadoop/reducer.py -input my-input/* -output my-output

输入是任何随机的句子序列。

谢谢,


问题答案:

您的-mapper和-reducer应该只是脚本名称。

hadoop@ubuntu:/usr/local/hadoop$ bin/hadoop jar contrib/streaming/hadoop-0.20.0-streaming.jar -file /home/hadoop/mapper.py -mapper mapper.py -file /home/hadoop/reducer.py -reducer reducer.py -input my-input/* -output my-output

当脚本位于hdfs内另一个文件夹中的作业中时,该作业相对于尝试任务以“。”执行。(仅供参考,如果您想添加其他文件(例如查找表),则可以在Python中打开它,就像在M
/ R作业中脚本位于与脚本相同的目录中一样)

还请确保您具有chmod a + x mapper.py和chmod a + x reducer.py



 类似资料:
  • 我是hadoop和地图还原的新手,我正在尝试编写一个地图还原器,计算单词计数txt文件的前10个计数单词。 我的 txt 文件“q2_result.txt”看起来像: 映射: 减速机: 我知道你可以在Hadoop jar命令中将一个标志传递给-D选项,这样它就会按照你想要的键进行排序(在我的情况下,计数是k2,2),这里我只是先使用一个简单的命令: 所以我认为这样简单的映射器和缩减器不应该给我错误

  • 问题内容: 尝试拉出microsoft / nanoserver映像时遇到以下错误。下载成功。在提取图像期间会发生此错误。 482ab31872a2:下载失败,无法完成注册层:重新执行错误:退出状态1:输出: 在Win32中无法成功 打开 OpenForBackup :打开\?\ C:\ ProgramData \ Docker \ windowsfilter \ 07bd46b89b4520e9

  • 我最近升级了我的项目。 我的项目生成失败并出现错误: 任务:检查样式主失败 . gradle\daemon\4.10.2\etc\check style\checkstyle-suppressions.xml(系统找不到指定路径) 这是我的gradle构建文件:

  • 问题内容: 今天,我第一次在Fedora 21上安装了docker。现在,我需要从默认的/ var / lib / docker更改docker images文件夹的位置。 复制文件(跳过devicemapper子文件夹,docker服务停止)并更改/ etc / sysconfig / docker(添加- g选项)后,我再次运行docker service,没有问题,devicemapper

  • 我目前正在学习如何使用Appium。 我的工作区如下所示: 我正在使用Windows 10 Pro 过了一段时间,我把一切都安排好了。我认为我的路径变量设置正确,我可以在cmd中调用Java和adb。 所以我想开始一些测试用例,我想在其中自动登录邮件应用程序。 在这里我遇到了错误。 以下是Appium所需的功能: 我在google上搜索了错误:packageAndLaunchActivityFro

  • 问题内容: 这段代码 给我这个错误 我对SSL几乎一无所知,但我曾尝试下载该站点的证书并使用该选项指向该文件,但是它没有用。我想念什么吗? 问题答案: 正如评论中已经指出的那样:从SSLLabs报告中可以看出,该网站的SSL实施不正确。该报告中有关您的问题的主要部分是: 该服务器的证书链不完整。等级上限为B。 这意味着服务器没有发送验证证书所需的完整证书链。这意味着您需要在验证时自行添加丢失的证书