在通过hadoop流运行python mapreduce脚本时获取“valueerror:no json object can be decoded”

wkftcu5l  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(217)

我正在尝试通过流在hadoop上运行一个简单的pythonmapreduce脚本。mapper部分加载一个json文档,从属性读取文本,并用1发出文本中的每个单词,稍后由脚本的reducer部分汇总。代码在hadoop之外运行得非常好。一旦提交到hadoop,Map就会失败,并显示“valueerror:no json object can be decoded”。错误行是带有“json.loads()”函数的错误行。我完全被这个难住了。我尝试运行的hadoop生态系统是hortonworks沙盒,上面有python2.6.6。还有谁遇到过类似的问题吗?

pengsaosao

pengsaosao1#

嗯,在反复修改脚本之后,我发现在执行以下操作时问题消失了:
使用 #!/usr/bin/env python2 在mapper和reducer文件的顶部。这个shebang特别指定了用于执行的python运行时的版本2.x。
在发出hadoop streaming命令时使用以下符号: hadoop jar hadoop-streaming.jar -files mapper.py,reducer.py -mapper 'python mapper.py' -reducer 'python reducer.py' -input <hdfs path to input file(s)> -output <hdfs path to output directory> 应用这些修改后,问题不再出现。想想看!

相关问题